2013-04-14 3 views
0

Простой код для изготовления UILabel для моего приложения являетсяположение UILabel сделать совместимым как для iPhone 4 и iPhone 5

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.

Я также попытался увидеть, если это помогает, вместо использования чисел

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

и используются переменные «ScreenHeight» в метод CGRectMake().

Я использую Xcode 4.6 и iPhone 5 (iOS 6.1.3) и iPhone 4 для того же.

ответ

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; 
} 
+0

ничего себе, удивительный, работал для меня. Это довольно просто, спасибо :-) – jeewan

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]; 
+2

Важно отметить, что 'NSLayoutConstraint' доступен только с iOS 6 –

Смежные вопросы