如何将autoresizingmask设置为以编程方式创建的视图层次结构

时间:2016-07-07 09:06:31

标签: ios objective-c ipad frame autoresizingmask

我正在开发一个CatalogueViewController,它包含一个滚动视图,该视图以编程方式填充了一系列PageViewController。这是旧代码,其中所有内容都以编程方式为iPad构建,仅用于纵向视图。此外,每个PageVC的内容都是以编程方式构建的,并且在运行时以编程方式添加了一些自定义UIView(这意味着在VC中创建和插入的每个视图都具有硬编码帧)。

现在我需要启用横向模式视图,因此每个页面现在应该“自动调整”以填充iPad屏幕的一半(因此我可以在横向和时间看到2页1页的肖像)。

我研究了很多关于自动调整的链接,其中包括thisthisthis

我认为一个可行的解决方案可能是在我的PageViewController的-(void)viewDidLoad-(void)viewWillAppear:(BOOL)animated-(void)viewDidAppear:(BOOL)animated中插入以下代码

    [self.view setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
    for(UIView* subview in self.view.subviews)
        [subview setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];

和(只是为了确定)在PageViewController中添加的主要自定义视图(在许多函数中)中也有以下内容(为其提供真实视觉结构的那些)

    for(UIView* subview in self.subviews)
        [subview setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
    [self setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];

但它没有完成这项工作......请注意,CatalogueViewController没有自动布局激活,PageViewController没有xib和每个大的自定义视图(正如我所说,在页面视图中添加以便给出主要内容) PageViewController的结构有一个xib,autolayout NOT active。

我不明白

有什么区别
  1. 在我的PageViewController(滚动视图中的VC,在CatalogueViewController内)中是否激活了autolayout?我认为不应该活跃,但我不知道为什么
  2. 在将帧分配给将添加到PageViewController的子视图之前或之后设置autoresizingmask?
  3. 对于第2点,请注意当分配一个PageViewController(但它仍然是空的)时,我会向它应用一个正确的帧(整页或半页),具体取决于设备方向和旋转后的帧我重新修复了每个PageViewController的框架。

    提前感谢任何人

0 个答案:

没有答案