如何为纵向和横向布局创建UIView

时间:2012-10-04 14:29:16

标签: objective-c ios uiview

我正在尝试创建一个适用于纵向和横向模式的UIView,但不知道如何实现这一点。仅供参考 - 我通过代码布置所有组件,因此没有XIB或故事板......这是一项要求。

我有一个名为createView的方法,它列出了我在创建视图时调用的所有视图组件(按钮,标签等等)。

我不知道的是说我的控制器在水平模式下通过addSubview:myNewCustomView添加视图,那么当从纵向切换到横向时,如何更改自定义UIView中组件的布局?

我会在自定义UIView中为方法创建一个用于纵向布局而另一个用于横向布局吗?如果我有两种方法,我是否必须让父母显示模式,横向或纵向,然后在我的自定义UIView中调用相应的createView方法?

1 个答案:

答案 0 :(得分:1)

您可以在CustomView类中覆盖layoutSubviews方法。 并在ViewController中调用CustomView对象上的setNeedsLayout。 在CustomView中保留一个变量以进行定位

在CustomView中: -

- (void) layoutSubviews(){
    // set position and height width of the subviews according to this views params
}

在YourViewController中: -

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration {
    [yourCustomViewObj setOrientation:orientation];
    [yourCustomViewObj setNeedsLayout];
}