我在应用屏幕尺寸方面遇到问题。我关闭了自动布局,这样就不会弄乱屏幕上的元素。
但是现在当我尝试为3.5英寸的屏幕创建一个这样的简单屏幕时:
但是当我在一个4英寸的屏幕上看到相同的布局时,它看起来像是这样的间距搞得一团糟:
我不明白我在这里做错了什么。如何在3.5英寸和4.0英寸屏幕上创建看起来相同的屏幕?
谢谢!
答案 0 :(得分:4)
Autolayout从Xcode 4.x向前迈出了巨大的一步。其中一件事是Apple听取了开发人员的意见:现在默认自动布局不再创建任何自动约束。这意味着:当你拉入所有控件时,你有一个完整的静态布局(带有绝对坐标)(你可以在任何时间点轻松地删除所有的约束,以回到那个状态。)。建议的工作流程是从那时起逐个添加约束。这导致了任何州的开发者方面的完全控制。
那就是说。 我的建议是:打开自动布局。然后将所有控件放到3.5屏幕上的静态位置。如果你不想支持肖像/风景或iPhone / iPad,那么就不要添加任何约束。而且你已经完成了,因为适用于3.5 screeen的静态布局也适用于4.0屏幕。
一旦您想要支持具有相同场景的iPad或横向模式,请逐个添加约束。真的行。自动布局现在是你的朋友(从Xcode 5开始)。相信我。
答案 1 :(得分:2)
选择你的UITableView,然后在Size Inspector中,激活所有自动调整箭头和线条,确保你的tableview是顶视图(在你的UIViewController视图中)。
答案 2 :(得分:2)
如果您不想处理自动布局,请转到尺寸检查器并将自动调整更改为:
答案 3 :(得分:1)
非常常见的问题我和我的每个应用都遇到过这个问题。
您有两个选择
你就是这样做的
你的* .h 中的
#import <UIKit/UIKit.h>
@interface v2ViewController : UIViewController
{
NSTimer *timer1;
NSTimer *timer2;
}
@property (nonatomic, retain) NSTimer *timer1;
@property (nonatomic, retain) NSTimer *timer2;
在* .m中添加此
@synthesize timer1;
@synthesize timer2;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
timer2 = [NSTimer scheduledTimerWithTimeInterval:2.5 target:self selector:@selector(moveOn) userInfo:nil repeats:NO];
}
- (IBAction) moveOn
{
//Now go to the Display Call Page
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
CGSize result = [[UIScreen mainScreen] bounds].size;
if(result.height == 480)
{
// iPhone Classic
[self performSegueWithIdentifier:@"iphone4" sender:nil];
}
if(result.height == 568)
{
// iPhone 5
[self performSegueWithIdentifier:@"iphone5" sender:nil];
}
}
}
if(UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPhone) { CGSize result = [[UIScreen mainScreen] bounds] .size; if(result.height == 480) { // iPhone Classic [weatherBGImageVw setFrame:CGRectMake(0,0,320,480)]; } if(result.height == 568) { // iphone 5 [weatherBGImageVw setFrame:CGRectMake(0,0,320,568)]; } }