我在xcode 5.1上编写了代码项目。我已经设置了所有控件的框架,这些控件在iPhone 5及更高版本中运行良好。但是当我在iPhone 4s上运行相同的项目时,我调整过的帧不适合iPhone 4s的屏幕。请有人帮我解决如何调整所有控件框架的简单方法。我是否需要手动更改所有控件的框架?
答案 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)
主要取决于您的要求,但仍然将此自动调整遮罩设置为您的元素将有助于您。
Autoresizing masks programmatically vs Interface Builder / xib / nib
答案 2 :(得分:0)