我们可以使用相同的Xib(包含UIView)来支持横向和纵向方向

时间:2013-10-22 04:00:56

标签: iphone ios objective-c uiview uistoryboard

我的故事板中有一个ViewController(searchListViewController)。此ViewController嵌入在navigationController中。当方向发生变化时,故事板中的ViewController会正确旋转。

我有一个包含UIView(CustomAlertView)的XIB。我想从我的searchListViewController中提供这个CustomAlertView。

为此,我在searchListViewController类中包含了以下代码。

searchListViewController.m:

-(void)loadCustomAlertView
{

     NSArray *allviews = [[NSBundle mainBundle] loadNibNamed:@"CustomAlertView" owner:self options:nil];
     CustomAlertView *customAlertView_Obj = allviews[0];
    [self.navigationController.view addSubview:customAlertView_Obj];
}

问题是:父导航控制器正确旋转,但当方向改变时,子节点“CustomAlertView”不会旋转。我在这段代码中做错了吗?

无论如何都要以编程方式处理XIB文件的旋转?

我想对Portrait和Landscape使用相同的CustomAlertView XIB。有可能吗?

2 个答案:

答案 0 :(得分:1)

是,您可以对两个方向使用相同的xib文件。

使用自动调整大小/自动重新定位约束(在“大小检查器”选项卡中)和自动布局(iOS6及更高版本),定义对象的属性,以便在屏幕方向更改时,父视图中的所有视图得到对齐和/或重新定位,调整大小。

您可以通过更改“属性检查器标签”中的方向来查看视图在不同方向的显示方式。

答案 1 :(得分:1)

只需在addSubview:customAlertView_Obj上执行searchListViewController,而不是在navigationController上添加。

希望,它会起作用。