我想添加一個子視圖到UIScrollView。首先,我從故事板實例化視圖控制器,然後將視圖的框架設置爲應用程序邊界。當我將視圖添加到UIScrollView時,它顯然大於它應該是的。UIView的框架渲染大於框架
CGRect mainFrame = CGRectMake(0, topButtonHeight, screenWidth, screenHeight);
feelingVC = (FeelingViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"feelingVC"];
feelingVC.delegate = self;
feelingView = feelingVC.view;
[feelingView setFrame:mainFrame];
[self.scrollView addSubview:feelingView];
我可以告訴大家,因爲它的背景色延伸超過它應該是。 XCode中的「Debug View Hierarchy」模式也證實了這一點。但是,如果我檢查視圖的框架,它會打印出它應該是什麼,而不是它實際是什麼。
大小相同的觀點,而是完全由程序生成的,工作,它應該:
mainView = [[UIView alloc] initWithFrame:mainFrame];
mainView.backgroundColor = [UIColor blackColor];
[self.scrollView addSubview:mainView];
我不知道這可能是導致這個問題 - 我從他們的視圖控制器實例化的其他意見,也通過故事板,並設置他們的幀沒有任何問題。
編輯:這是從包含UIScrollView的視圖控制器的viewDidLoad調用的。屏幕寬度& screenHeight被計算爲這樣的(它們是實例變量):
screenWidth = [UIScreen mainScreen].applicationFrame.size.width;
screenHeight = [UIScreen mainScreen].applicationFrame.size.height;
什麼功能呢這段代碼是從哪裏調用的? screenWidth和screenHeight是如何定義的? –
使用scrollView在viewDidLoad中調用視圖控制器。 – jdelman
這可能與您的問題相關,也可能不相關,但viewDidLoad通常是設置屏幕/大小相關屬性的不可思議的地方,尤其是在使用自動佈局的情況下。 viewDidLayoutSubviews通常更好。 –