Я изучаю автомасштабирование по коду. Для моей цели обучения я делаю пример приложений, используя автозапуск. В моем примере приложения я решил оставить текстовое поле ниже 20 пунктов с верхней границы. Вот кодAutoLayout программно вызывает проблему в iphone 4
#import "SampleViewController.h"
@interface SampleViewController(){
UITextField *username;
}
@end
@implementation SampleViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.edgesForExtendedLayout = UIRectEdgeNone;
[self prepareViews];
}
-(void)prepareViews{
username = [[UITextField alloc]init];
username.placeholder = @"Username";
[username setBorderStyle:UITextBorderStyleRoundedRect];
username.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:username];
[self prepareConstraint];
}
-(void)prepareConstraint{
NSLayoutConstraint *constraint = [NSLayoutConstraint
constraintWithItem:username
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeCenterX
multiplier:1.0
constant:0];
[self.view addConstraint:constraint];
constraint = [NSLayoutConstraint
constraintWithItem:username
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:250];
[self.view addConstraint:constraint];
constraint = [NSLayoutConstraint
constraintWithItem:username
attribute:NSLayoutAttributeTopMargin
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeTopMargin
multiplier:1.0
constant:20];
[self.view addConstraint:constraint];
}
@end
Когда я запускаю этот код на iPhone 4 (IOS 7.1) я получил такой вывод Затем, когда я запускаю этот код на iPhone 5S (IOS 8.4) я получил выход как это
Ребята я не знаю, где я делаю mistake.Kindly указывают мне, где я делаю mistake.And я получил это предупреждение, когда я запускаю этот код на iPhone 4 (IOS 7.1).
Невозможно одновременно удовлетворить ограничения. Вероятно, по крайней мере один из ограничений в следующем списке - это тот, который вы не хотите. Попробуйте : (1) посмотрите на каждое ограничение и попытайтесь выяснить, какие вы не ожидаете; (2) найти код, который добавил нежелательное ограничение или ограничений и исправить его. (Примечание: Если вы видите NSAutoresizingMaskLayoutConstraints, что вы не понимаете, обратитесь к документации для свойства UIView translatesAutoresizingMaskIntoConstraints) ( "< NSLayoutConstraint: 0x14dcac70 H: | - (20) - [UITextField: 0x14d955b0] (Имена: '|': UIView: 0x14d9b480)>»)
будет пытаться восстановить разбив ограничение < NSLayoutConstraint: 0x14dcac70 H: | - (20) - [UITextField: 0x14d955b0]
(Названия: '|' : UIView: 0x14d9b480)>Перерыв на objc_exception_throw, чтобы поймать это в de мудак. Методы в категории UIConstraintBasedLayoutDebugging на UIView , перечисленные в < UIKit/UIView.h> также могут быть полезны.
изменение toitem в 3 contraint от 'я. view' to 'self.topLayoutGuide' и сделать toitem attributr до нижнего –
@Bhavin Я делаю изменения, о чем вы упоминали, после того, как я запустил код в приложении iPhone 4, но он отлично работает в 5 секунд. – Balaji
Что такое журнал этой аварии? –