gpt4 book ai didi

c# - xamarin.ios 使用仅图像代码实现 PageController

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:23:07 25 4
gpt4 key购买 nike

我正在使用 xamarin 开发一个 ios 应用程序,只有代码,没有 StoryBoard 或任何设计器。我需要实现一个包含许多图像并水平滚动的 UiViewController,就像 this .

我还没有找到适合我的东西。所以有人有一些建议或一些例子可以给我看吗?

最佳答案

似乎您需要一个没有 Storyboard或 .xib 的 UIPageViewController

您需要 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. 页面数据源:

    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.cs 中的 FinishedLaunching 方法:

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;
}

希望对您有所帮助。

如果您还有一些问题,请留在此处。

关于c# - xamarin.ios 使用仅图像代码实现 PageController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38805639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com