【发布时间】:2013-12-08 15:55:43
【问题描述】:
我在应用屏幕尺寸方面遇到问题。我关闭了自动布局,以免弄乱屏幕上的元素。
但是现在当我尝试为 3.5 英寸屏幕创建一个像这样的简单屏幕时:
但是当我在一个 4 英寸的屏幕上看到相同的布局时,它看起来都被这样的间距弄乱了:
我不明白我在这里做错了什么。如何创建在 3.5 英寸和 4.0 英寸屏幕上看起来相同的屏幕?
谢谢!
【问题讨论】:
标签: ios storyboard autolayout
我在应用屏幕尺寸方面遇到问题。我关闭了自动布局,以免弄乱屏幕上的元素。
但是现在当我尝试为 3.5 英寸屏幕创建一个像这样的简单屏幕时:
但是当我在一个 4 英寸的屏幕上看到相同的布局时,它看起来都被这样的间距弄乱了:
我不明白我在这里做错了什么。如何创建在 3.5 英寸和 4.0 英寸屏幕上看起来相同的屏幕?
谢谢!
【问题讨论】:
标签: ios storyboard autolayout
Autolayout 从 Xcode 4.x 到 5.0 向前迈出了一大步。 Apple 听取开发人员的意见之一是:现在默认情况下自动布局不再创建任何自动约束。这意味着:当您拉入所有控件时,您拥有一个完整的静态布局(具有绝对坐标)(您可以在任何时间点轻松删除所有约束,以返回该状态。)。建议的工作流程是从那时起一个接一个地添加约束。这导致开发人员在任何状态下都可以完全控制。
那是说。 我给你的建议是:打开自动布局。然后将所有控件放在 3.5 屏幕上的静态位置。如果您不想支持纵向/横向或 iPhone/iPad,那么就不要添加任何约束。这样就完成了,因为适合 3.5 屏幕的静态布局也应该适用于 4.0 屏幕。
一旦您想支持 iPad 或具有相同场景的横向模式,请一一添加约束。真的行。自动布局现在是你的朋友(从 Xcode 5 开始)。相信我。
【讨论】:
选择您的 UITableView,然后在 Size Inspector 中,激活所有自动调整大小的箭头和线条,确保您的 tableview 是顶视图(在您的 UIViewController 视图内)。
【讨论】:
如果您不想处理自动布局,请转到您的尺寸检查器并将您的自动调整大小更改为:
【讨论】:
非常常见的问题,我的每个应用都遇到过这个问题。
你有两个选择
这就是你的做法
在您的 *.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 结果 = [[UIScreen mainScreen] bounds].size; 如果(结果。高度 == 480) { // iPhone经典 [weatherBGImageVw setFrame:CGRectMake(0, 0, 320, 480)]; } 如果(结果。高度 == 568) { // iphone 5 [weatherBGImageVw setFrame:CGRectMake(0, 0, 320, 568)]; } }
【讨论】: