Ios 旋转到横向和反向时调整UIView大小的最佳方法

Ios 旋转到横向和反向时调整UIView大小的最佳方法,ios,objective-c,iphone,uiview,ios8,Ios,Objective C,Iphone,Uiview,Ios8,因为我对ios编程非常陌生,所以我有一个更一般的设计问题。 我有一个ViewController,它包含一个GraphView(UIScrollView+UIView),可以正常工作。当我旋转到横向时,我希望GraphView将其高度调整为显示高度(因此它会填满整个屏幕),但在纵向时仅为300分 到目前为止,我所做的是在ViewController中实现viewWillLayoutSubviews,并重置约束: - (void)viewWillLayoutSubviews{ _g

因为我对ios编程非常陌生,所以我有一个更一般的设计问题。 我有一个ViewController,它包含一个GraphView(UIScrollView+UIView),可以正常工作。当我旋转到横向时,我希望GraphView将其高度调整为显示高度(因此它会填满整个屏幕),但在纵向时仅为300分

到目前为止,我所做的是在ViewController中实现
viewWillLayoutSubviews
,并重置约束:

- (void)viewWillLayoutSubviews{        
_graphViewHeightConstraint.constant = ([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortrait) ? 300:[[UIScreen mainScreen] bounds].size.height-self.navigationController.navigationBar.frame.size.height - 2*_distanceToTopView.constant; 
}
在GraphView.m中:

- (void)layoutSubviews{
kGraphHeight = self.frame.size.height;
[self setNeedsDisplay];  
}
(因为我需要代码中的变量kGraphHeight来绘制图形)。这似乎不是一个非常优雅的解决方案,所以我想问,更好的方法是什么?非常感谢您的输入:)

在GraphView.m中

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews]; 
    kViewWidth = <GET_SCREEN_WIDTH_HERE>;
    kViewHeight = <GET_SCREEN_HEIGHT_HERE>;
    [self updateViewDimensions];
}
将视图旋转到横向视图后,将调用viewDidLayoutSubviews

这对我有用

- (void)updateViewDimensions
{
    scrollView.frame = self.view.frame;
    yourView.frame = CGRectMake(kViewXStartsFrom, kViewYStartsFrom, kViewWidth, kViewHeight);
}