UIPageViewController改变大小?(UIPageViewController cha

2019-09-22 00:52发布

我使用的是在Xcode 4的基于页面的应用程序模板加载PDF页面和超过隐藏的文本框创建一个UITextView,所以用户可以写笔记。

到目前为止,我有这一切的工作,但是当我添加UITextView的,这是在(显示2页)风景模式错了地方。

// ModelController.m

- (id)init
{
    self = [super init];
    if (self) {
        NSString *pathToPdfDoc = [[NSBundle mainBundle] pathForResource:@"My PDF File" ofType:@"pdf"];
        NSURL *pdfUrl = [NSURL fileURLWithPath:pathToPdfDoc];
        self.pageData = CGPDFDocumentCreateWithURL((__bridge CFURLRef)pdfUrl);  // pageData holds the PDF file
    }
    return self;
}

- (DataViewController *)viewControllerAtIndex:(NSUInteger)index storyboard:(UIStoryboard *)storyboard
{
    // Return the data view controller for the given index.
    if( CGPDFDocumentGetNumberOfPages( self.pageData ) == 0 || (index >= CGPDFDocumentGetNumberOfPages( self.pageData )))
        return nil;

    // Create a new view controller and pass suitable data.
    DataViewController *dataViewController = [storyboard instantiateViewControllerWithIdentifier:@"DataViewController"];
    dataViewController.dataObject = CGPDFDocumentGetPage( self.pageData, index + 1 );   // dataObject holds the page of the PDF file

    [dataViewController view];  // make sure the view is loaded so that all subviews can be accessed

    UITextView  *textView = [[UITextView alloc] initWithFrame:CGRectMake( 10, 20, 30, 40 )];

    textView.layer.borderWidth = 1.0f;
    textView.layer.borderColor = [[UIColor grayColor] CGColor];

    [dataViewController.dataView addSubview:textView];  // dataView is a subview of dataViewController.view in the storyboard/xib

    CGRect  viewFrame = dataViewController.dataView.frame;  // <- *** THIS IS THE WRONG SIZE IN LANDSCAPE ***
}

这种行为真让我吃惊,因为当我旋转的iPad viewControllerAtIndex不叫,所以我不知道视图框的实际规模是什么样的方式。 我得到在纵向和横向同样的观点框架:

# in Xcode console:
po [dataViewController view]

# result in either orientation:
(id) $4 = 0x0015d160 <UIView: 0x15d160; frame = (0 20; 768 1004); autoresize = RM+BM; layer = <CALayer: 0x15d190>>
#

有谁知道,如果有一个变换,我应该使用的UITextView的正确定位? 我很担心,我可能有独立的存储单元的位置和重新定位他们在收到shouldAutorotateToInterfaceOrientation消息。

看来,苹果可能已经正确实现UIPageViewController,但所有我能找到的是,我仍然在试图找出这部分工作:

UIPageViewController和关闭屏幕方向变化

谢谢!

Answer 1:

我认为这里的关键是要覆盖viewDidLayoutSubviews在DataViewController和管理您所有的编程插入非自动调整大小视图大小,因为你真的不知道什么父母会做它的子视图,直到那个时候。

-(void)viewDidLayoutSubviews
{
  [super viewDidLayoutSubviews];

  self.textView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
}


文章来源: UIPageViewController changes size?