0

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

我有一个方法称为createView布局所有视图组件(按钮、标签等),我在创建视图时调用这些组件。

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

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

4

1 回答 1

1

您可以在 CustomView 类中覆盖 layoutSubviews 方法。并在您的 ViewController 中调用您的 CustomView 对象上的 setNeedsLayout。在您的 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];
}
于 2012-10-04T14:38:08.330 回答