调整所有iphone的所有控件的框架

时间:2014-04-15 09:50:56

标签: ios iphone objective-c xcode

我在xcode 5.1上编写了代码项目。我已经设置了所有控件的框架,这些控件在iPhone 5及更高版本中运行良好。但是当我在iPhone 4s上运行相同的项目时,我调整过的帧不适合iPhone 4s的屏幕。请有人帮我解决如何调整所有控件框架的简单方法。我是否需要手动更改所有控件的框架?

3 个答案:

答案 0 :(得分:0)

你可以使用多个xib / storyboard一个用于iphone5屏幕尺寸,另一个用于iphone4屏幕尺寸

然后像这样在appDelegate中进行更改

//如果使用故事板

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
     UIStoryboard *storyBord;
    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
   {
         if(self.window.frame.size.height == 568)
             storyBord = [UIStoryboard storyboardWithName:@"Main_iPhone5" bundle:[NSBundle mainBundle]];
        else
             storyBord = [UIStoryboard storyboardWithName:@"Main_iPhone4" bundle:[NSBundle mainBundle]];
   }
   self.window.rootViewController = [storyBord instantiateInitialViewController];
   [self.window makeKeyAndVisible];

return YES;
}

//如果您使用.xib文件,那么每个视图controller.m文件都必须像这样初始化

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
    {
        if([UIScreen mainScreen].bounds.size.height == 568)
            self = [super initWithNibName:@"FeedActivity_iPhone5" bundle:[NSBundle mainBundle]];
        else
            self = [super initWithNibName:@"FeedActivity_iPhone4" bundle:[NSBundle mainBundle]];
    }
}
return self;
}

你也可以选择使用自动布局,但这对你来说似乎很容易

答案 1 :(得分:0)

enter image description here

主要取决于您的要求,但仍然将此自动调整遮罩设置为您的元素将有助于您。

Autoresizing masks programmatically vs Interface Builder / xib / nib

答案 2 :(得分:0)

您可以使用自动布局。为此,首先要检查故事板是否已选中自动布局

autolayout

然后,您需要添加约束

constrains

我建议你查看这个视频:

https://www.youtube.com/watch?v=r1sc7NI6-wo