0

为我的应用程序制作 UILabel 的简单代码是

UILabel *todaysGame = [[UILabel alloc] initWithFrame:CGRectMake(10, 60, 300, 250)];
todaysGame.text = @"Today's Game";
todaysGame.backgroundColor = [UIColor grayColor];
[self.view addSubview:todaysGame];

这非常适合我的 iPhone 5 屏幕高度,但在 iPhone 4 屏幕上搞砸了。我试图阅读 iOS 6 的自动布局功能,但真的不明白该怎么做。我不想使用 Storyboard 或 NIB,我想以编程方式进行。如何定位与 iPhone 4 和 5 的屏幕高度兼容的 UI 元素。

我也试着看看这是否有帮助而不是使用数字

screenBound = [[UIScreen mainScreen] bounds];
screenSize = screenBound.size;
screenWidth = screenSize.width;
screenHeight = screenSize.height;

并在 CGRectMake() 方法中使用了“screenHeight”变量。

我正在使用 Xcode 4.6 和 iPhone 5 (iOS 6.1.3) 和 iPhone 4。

4

2 回答 2

1

- (void)viewWillLayoutSubviews您可以在您的方法中以编程方式设置框架UIViewController或设置autoresizingMask视图属性。

设置框架:

- (void)viewWillLayoutSubviews {
    if ([UIScreen mainScreen].bounds.size.height == 568) {
        self.label.frame = CGRectMake(0, 0, 320, 100); // for iPhone 5
    } else {
        self.label.frame = CGRectMake(0, 0, 320, 60);
    }
}

或设置autoresizingMask- (void)viewDidLoad

- (void)viewDidLoad {
    [super viewDidLoad];
    CGFloat height = self.view.bounds.size.height * 0.2 // 20% of parent view
    self.label.frame = CGRectMake(0, 0, 320, height);
    self.label.autoresizingMask = UIViewAutoresizingFlexibleHeight;
}
于 2013-04-14T15:02:42.323 回答
0

你想要的效果是什么?相同高度、可变高度、上边距等?

您希望标签始终是那个大小吗?如果是这样,您可以关闭自动调整大小

label.translatesAutoresizingMaskIntoConstraints = NO;

如果您希望标签与您的视图高度相同...

NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:label attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeHeight multiplier:1.0 constant:0.0];
[self.view addConstraint:constraint];
于 2013-04-14T15:09:19.880 回答