标签: uipageviewcontroller

Autolayout中的viewDidLayoutSubviews,在UIPageViewController上旋转

我有一个UIPageViewController视图控制器包含一个UIScrollView包含一个UIImageView.在加载的视图控制器中viewWillAppear,如果旋转视图,则边界不正确.这就是我试图动态地基于根据所述图像的尺寸的图像视图定位.我试图使用,(void)viewDidLayoutSubviews但我需要调用[self.view layoutSubviews]或我得到一个断言错误.当我添加它,然后我不能再缩放图像视图.您可以看到它尝试缩放但调整大小到最小缩放.

我对自动布局完全不熟悉,并试图看看我是否遗漏了一些东西.

我目前的修复涉及检查框架的边界以查看方向是否与边界匹配.如果是这样,那么我按原样使用边界.如果没有,那么我在计算中切换高度和宽度.

我想知道如何正确使用viewDidLayoutSubviews它而不会剥夺我放大图像视图的能力.

从两个答案中,看起来viewDidLayoutSubviews布局视图可能是错误的地方.我试图找到应该在哪里完成并让视图知道它们的边界和方向,但在它们在屏幕上可见之前.从我的阅读,我认为那是,viewDidLayoutSubviews但似乎使用可能导致无限循环.

objective-c uiscrollview ios uipageviewcontroller autolayout

3
推荐指数
1
解决办法
7302
查看次数

iOS中的UIPageViewController自动滚动

我正在制作一个应用程序,其中 PageViewController 应该在某个时间间隔内滚动。目前我已经完成了手动滚动。用户可以滚动任何图像,它会起作用。但坚持通过用户触摸实现自动滚动。下面是我的代码。请帮我解决这个问题。

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    _pageTitles = @[@"", @"", @"", @""];
    _pageImages = @[@"page1.png", @"page2.png", @"page3.png", @"page4.png"];

    // Create page view controller
    self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageViewController"];
    self.pageViewController.dataSource = self;

    PageContentViewController *startingViewController = [self viewControllerAtIndex:0];
    NSArray *viewControllers = @[startingViewController];
    [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

    // Change the size of page view controller
    self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 50);

    [self addChildViewController:_pageViewController];
    [self.view addSubview:_pageViewController.view];
    [self.pageViewController didMoveToParentViewController:self];
}

- (PageContentViewController …
Run Code Online (Sandbox Code Playgroud)

objective-c ios uipageviewcontroller

3
推荐指数
1
解决办法
6752
查看次数

对不同的页面视图使用相同的 ViewController Swift

我是页面浏览量的新手,所以请耐心等待。

到目前为止,我看过的所有教程都向您展示了如何为 PageViewController 中的不同页面设置不同的独特 ViewController。

我正在设置一个为期 3 天的新闻提要,因此我决定在每个页面之间滑动会导致用户在日期之间切换。

因此,每个页面在UI方面完全相同,但在Data方面不同

所以我应该能够将每个 Page 指向同一个 viewController 但指向不同的数据源。

我的数据源将是一个二维数组。是的,你猜对了,二维分隔天!每列代表一天,对应的行将是其各自页面中的表格视图。

有没有简单的方法可以让所有页面都可以访问这个数据源(数组),(在 PageViewController 中初始化),并让每个页面指向同一个 ViewController,并相应地编辑它们各自的表视图。

谢谢您的帮助 !

uipagecontrol ios uipageviewcontroller

3
推荐指数
1
解决办法
801
查看次数

如何禁用ViewControllers的无限循环?

我在网上找到了这个代码并进行了测试.它工作但它进入无限循环.我看到一些关于func为页面索引创建新内容的帖子.

链接到我发现代码的网站:http://samwize.com/2015/10/13/how-to-create-uipageviewcontroller-in-storyboard-in-container-view/

有人愿意编辑代码以便循环结束吗?

import UIKit

class MyPageViewController: UIPageViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate {

    var pages = [UIViewController]()

    override func viewDidLoad() {
        super.viewDidLoad()

        self.delegate = self
        self.dataSource = self

        let page1: UIViewController! = storyboard?.instantiateViewControllerWithIdentifier("page1")
        let page2: UIViewController! = storyboard?.instantiateViewControllerWithIdentifier("page2")
        let page3: UIViewController! = storyboard?.instantiateViewControllerWithIdentifier("page3")

        pages.append(page1)
        pages.append(page2)
        pages.append(page3)

        setViewControllers([page2], direction: UIPageViewControllerNavigationDirection.Forward, animated: false, completion: nil)
    }

    func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
        let currentIndex = pages.indexOf(viewController)!
        let previousIndex = abs((currentIndex - 1) % pages.count)

        return pages[previousIndex] …
Run Code Online (Sandbox Code Playgroud)

ios uipageviewcontroller swift

3
推荐指数
2
解决办法
2853
查看次数

在 Swift 中将 UIPageViewController 的逻辑实现为 UIViewController 的子视图

我必须实现一个 UIPageViewController 作为我的 UIViewController 的子视图。UIPageViewController 内部有一些逻辑和其他 ViewController。我的问题是如何连接下面的这两段代码。

所以这是我的主要 UIViewController 代码:

class MyMainViewController: UIViewController {

    override func viewDidLoad() {
       super.viewDidLoad()
    }
    override func didReceiveMemoryWarning() {
       super.didReceiveMemoryWarning()
    }   
}
Run Code Online (Sandbox Code Playgroud)

和我的 UIPageViewController 代码,它实现了他包含的 ViewControllers 之间的无限循环(我复制了整个代码,可能没有必要):

class TutorialPageViewController: UIPageViewController {

    private(set) lazy var orderedViewControllers: [UIViewController] = {
        return [self.newColoredViewController("Green"),
                self.newColoredViewController("Red"),
                self.newColoredViewController("Blue")]
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        dataSource = self

        if let firstViewController = orderedViewControllers.first {
            setViewControllers([firstViewController],
                direction: .Forward,
                animated: true,
                completion: nil)
        }
    }

    private func newColoredViewController(color: String) -> UIViewController {
        return UIStoryboard(name: …
Run Code Online (Sandbox Code Playgroud)

subview uiviewcontroller ios uipageviewcontroller swift

3
推荐指数
1
解决办法
2556
查看次数

UIPageControl 显示当前页面

我做了一个PageViewController在不同视图控制器之间切换的方法,我想显示我们看到的页面。我添加了一个pageControl,并给出了以下代码。

pageControl.currentPageIndicatorTintColor = UIColor.blueColor()
pageControl.pageIndicatorTintColor = UIColor.lightGrayColor()
pageControl.numberOfPages = pages.count
Run Code Online (Sandbox Code Playgroud)

完整代码:

import UIKit

class ViewControllerSportinfrastructuur: UIViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate {

@IBOutlet weak var pageControl: UIPageControl!

var pageViewController: UIPageViewController!
let pages = ["PageOneViewController", "PageTwoViewController"]

//MARK: - page view controller data source
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {

    if let index = pages.indexOf(viewController.restorationIdentifier!) {
        if index > 0 {
            return viewControllerAtIndex(index - 1)
        }
    }

    return nil
}

func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? …
Run Code Online (Sandbox Code Playgroud)

uipagecontrol ios uipageviewcontroller swift

3
推荐指数
1
解决办法
6096
查看次数

如何在 UIPageViewController 中重用同一个 ViewController?

我正在创建一个日历应用程序,我想将其布局为 UIPageViewController 类型的样式。所以每个页面都显示一天。每个页面将完全相同(如 UI 组件中),但仅包含不同的数据。我想使用相同的 ViewController 来执行此操作,因为它显然会更整洁。但我只是想知道这是否可能?如果是这样我该怎么做呢?多谢你们。

scrollview uiviewcontroller nscalendar uipageviewcontroller swift

3
推荐指数
1
解决办法
1437
查看次数

ios Horizo​​ntal UISlider导致UIPageViewController在不打算时滑动页面

网页浏览中的单个或多个水平滑块会带来麻烦.用户滑动滑块的拇指而不会导致页面视图滑动.

我尝试过的变通方法

  1. 重写Pan Gesture以使最小速度相关
  2. 在滑块上放置一个不可见的矩形来捕捉平移手势
  3. 重写HitTest以使拇指点击矩形更大

iphone uislider ios uipageviewcontroller

2
推荐指数
1
解决办法
999
查看次数

UIPageViewController:Viewcontrollers之间的淡入/淡出动画?

我按照http://www.appcoda.com/uipageviewcontroller-storyboard-tutorial/上的教程来实现UIPageViewController.当用户在它们之间滚动时,我需要在视图控制器之间进行转换以淡入/淡出.

这样做的应用程序示例就在这里https://itunes.apple.com/us/app/tapiture/id645402534?mt=8

objective-c uiviewcontroller uianimation ios uipageviewcontroller

2
推荐指数
1
解决办法
6385
查看次数

如何将多个ViewControllers添加到我的UIPageViewController?

所以我对Obj-C很新,并尝试查看示例代码和其他在线资源来回答我的问题,但我似乎找不到任何真正有用的东西.基本上我要做的是将我在Storyboard中创建的多个UIViewControllers添加到UIPageViewController - 我寻求帮助的第一个地方是使用PageBased应用程序模板的Xcode本身.这实际上帮助了很多,我得到了一个PageController启动和运行.然后我转向在线资源,但大多数(如果不是全部)使用单个viewController(像这样).然后我转向StackOverflow并找到以下内容 - 如何实现利用多个ViewControllers的UIPageViewController.以上资源让我走得很远:在PageViewController.h中:

    #import <UIKit/UIKit.h>

@interface PageViewController : UIPageViewController <UIPageViewControllerDataSource>

@end
Run Code Online (Sandbox Code Playgroud)

在PageViewController.m中:

    #import "PageViewController.h"

@interface PageViewController ()

@end

@implementation PageViewController {
    NSArray *viewControllers;
    UIViewController *first;
    UIViewController *second;
    UIViewController *third;
    UIViewController *fourth;
    UIViewController *fifth;
}

- (UIViewController *)first {

        UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Secondary" bundle:nil];
        first = [sb instantiateViewControllerWithIdentifier:@"1"];

    return first;
}

- (UIViewController *)second {

    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Secondary" bundle:nil];
    second = [sb instantiateViewControllerWithIdentifier:@"2"];

    return second;
}
- (UIViewController *)third {

    UIStoryboard *sb = …
Run Code Online (Sandbox Code Playgroud)

objective-c uiviewcontroller uipageviewcontroller

2
推荐指数
1
解决办法
4457
查看次数