应用程序支持ipad和iphone中的应用程序横向和纵向模式

时间:2014-02-13 12:09:53

标签: ios iphone objective-c ipad

在我的应用程序中,我尝试创建一个界面构建器支持ipad和iPhone中的横向和纵向。

[在Android中,我们使用fill parent来自动调整动态创建的UI-Elements.is iOS中的任何语法都可以自动调整]

  1. 如何动态创建UI元素,支持横向模式和纵向模式?

  2. 如何创建视图控制器以支持横向模式和纵向模式?

  3. 是否需要动态创建所有视图和UI元素?

3 个答案:

答案 0 :(得分:2)

1)如果您将制作xib或nib而不是仅在一种模式下将xib或nib显示为纵向或横向。对于任何控件,请使用“自动调整”选项,如下图所示。

Auto layout

http://www.raywenderlich.com/50319/beginning-auto-layout-tutorial-in-ios-7-part-2。您可以使用此链接进行自动布局。

但是自动布局无法正常工作。因此,即使使用自动布局,也需要以编程方式设置控制框架。

2)如果你想动态开发而不是使用下面的代码,你可以设置所有控件的框架。 在 ViewwillAppear

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(orientationChanged) name:UIDeviceOrientationDidChangeNotification object:nil];
viewdidload 中的

将控件设置如下。

UILabel lbl - [UILabel alloc]init];


-(void)orientationChanged{

       if(Orientation is portrait){
            [lbl setFrame:for portrait];
    }else{
           [lbl setFrame: for landscape];
    }

如果设备更改模式比上述通知触发并且在该方法中。你可以设置控制框架。

我希望你能得到答案。

答案 1 :(得分:0)

您可以使用自动布局提供纵向和横向模式。

有关详情,请查看:What is Auto Layout?

您必须设置横向和纵向模式的约束才能工作。就像你想要一个顶部的按钮一样,你可以设置它的约束:从顶部和左边等等。

如果您希望UI元素动态更改,您只需根据您的要求更改方向框架。示例代码在这里:

# pragma mark - Orientation related methods

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration NS_AVAILABLE_IOS(3_0)
{
    if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) {
        [self deviceRotatedToLandscapeMode];
    }
    else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
        [self deviceRotatedToLandscapeMode];
    }
    else if (toInterfaceOrientation == UIInterfaceOrientationPortrait) {
        [self deviceRotatedToPortraitMode];
    }
    else if (toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {
        [self deviceRotatedToPortraitMode];
    }

}

- (void) deviceRotatedToPortraitMode {

    self.mTableView.frame = CGRectMake(0.0, 0.0, self.view.frame.size.width, self.view.frame.size.height);

}

- (void) deviceRotatedToLandscapeMode {

    self.mTableView.frame = CGRectMake(0.0, 0.0, self.view.frame.size.height, self.view.frame.size.height);

}

答案 2 :(得分:0)

最可靠的方法 - 在视图控制器中创建方法 -

-(void)setFrameForOrientationChange:(UIDeviceOrientation*) o {
//... 
 implement your code for frame settings..
}