我正在尝试创建一个适用于纵向和横向模式的UIView,但不知道如何实现这一点。仅供参考 - 我通过代码布置所有组件,因此没有XIB或故事板......这是一项要求。
我有一个名为createView
的方法,它列出了我在创建视图时调用的所有视图组件(按钮,标签等等)。
我不知道的是说我的控制器在水平模式下通过addSubview:myNewCustomView
添加视图,那么当从纵向切换到横向时,如何更改自定义UIView中组件的布局?
我会在自定义UIView中为方法创建一个用于纵向布局而另一个用于横向布局吗?如果我有两种方法,我是否必须让父母显示模式,横向或纵向,然后在我的自定义UIView中调用相应的createView方法?
答案 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];
}