xamarin.ios实现PageController与图像只有代码

我正在开发一个ios应用程序与Xamarin,只有代码,没有StoryBoard,或任何devise师。 我需要实现一个UiViewController,其中包含许多图像,并水平滚动,就像这样 。

我没有find适合我的东西。 所以有人有一些build议或一些例子来显示我?

看起来像你需要一个UIPageViewController没有故事板或.xib。

你需要3个自定义类来实现它。

  1. MyPageViewController – 一个自定义的UIPageViewController

     public class MyPageViewController : UIPageViewController { private List<ContentViewController> pages = new List<ContentViewController>(); public MyPageViewController() : base(UIPageViewControllerTransitionStyle.Scroll, UIPageViewControllerNavigationOrientation.Horizontal) { View.Frame = UIScreen.MainScreen.Bounds; pages.Add(new ContentViewController(0,UIColor.Red)); pages.Add(new ContentViewController(1,UIColor.Green)); pages.Add(new ContentViewController(2,UIColor.Blue)); DataSource = new PageDataSource(pages); SetViewControllers(new UIViewController[] { pages [0] as UIViewController }, UIPageViewControllerNavigationDirection.Forward, false, null); } } 
  2. PageDataSource

     public class PageDataSource : UIPageViewControllerDataSource { List<ContentViewController> pages; public PageDataSource(List<ContentViewController> pages) { this.pages = pages; } override public UIViewController GetPreviousViewController(UIPageViewController pageViewController, UIViewController referenceViewController) { ContentViewController currentPage = referenceViewController as ContentViewController; ContentViewController pageToReturn = null; if (currentPage.Index == 0) { pageToReturn = pages[pages.Count - 1]; } else { pageToReturn = pages[currentPage.Index - 1]; } // NOTE: If the same view controller is returned, UIPageViewController will break and show black screen return pageToReturn != currentPage ? pageToReturn : null; } override public UIViewController GetNextViewController(UIPageViewController pageViewController, UIViewController referenceViewController) { ContentViewController currentPage = referenceViewController as ContentViewController; ContentViewController pageToReturn = pages[(currentPage.Index + 1) % pages.Count]; return pageToReturn != currentPage ? pageToReturn : null; } } 
  3. ContentViewController – 一个自定义的UIViewController ,只需要添加属性Index

     public class ContentViewController : UIViewController { private int index = -1; public int Index { get { return index; } } public ContentViewController(int _index, UIColor backColor) { this.index = _index; this.View.Frame = UIScreen.MainScreen.Bounds; this.View.BackgroundColor = backColor; } } 

最后,重写AppDelegate.csFinishedLaunching方法:

 public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions) { this.Window = new UIWindow(UIScreen.MainScreen.Bounds); this.Window.RootViewController = new MyPageViewController(); this.Window.MakeKeyAndVisible(); return true; } 

希望它可以帮助你。

如果还有问题,请留在这里。