如何创建纵向和横向布局的UIView(How to create a UIView for both

2019-10-30 16:53发布

我想创建一个UIView,会为纵向和横向模式下工作,但不知道如何实现这一目标。 仅供参考 - 我通过代码,所以没有XIB或故事板铺设了所有的组件...这是一个要求。

我有一个名为方法createView ,规定了所有视图组件(按钮,标签,等...),我称之为创建视图的任何时间。

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

我会创造在我的自定义的UIView一个方法来布局纵向和另一个用于景观? 如果我有两种方法,我会得到父母的显示模式,横向或纵向,然后调用我的自定义的UIView适当CreateView的方法?

Answer 1:

你可以在你CustomView类的过程layoutSubviews方法。 而在你的ViewController电话setNeedsLayout您CustomView对象。 保持一个变量在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];
}


文章来源: How to create a UIView for both portrait and landscape layout