Ios CGRectMake不';行不通
我正在基于iOS 7编写“iOS编程食谱”中的示例。我需要创建Ios CGRectMake不';行不通,ios,objective-c,Ios,Objective C,我正在基于iOS 7编写“iOS编程食谱”中的示例。我需要创建UITextField并将其添加到ViewController 在ViewController.m中,我有: - (void) viewDidLoad { [super viewDidLoad]; [self createField]; } - (void) createField { self.textField = [[UITextField alloc] initWithFrame:CGRectMa
UITextField
并将其添加到ViewController
在ViewController.m
中,我有:
- (void) viewDidLoad {
[super viewDidLoad];
[self createField];
}
- (void) createField {
self.textField = [[UITextField alloc] initWithFrame:CGRectMake(20.0f, 35.0f, 280.0f, 30.0f)];
self.textField.translatesAutoresizingMaskIntoConstraints = NO;
self.textField.borderStyle = UITextBorderStyleRoundedRect;
self.textField.placeholder = @"Enter text to share";
self.textField.delegate = self;
[self.view addSubview:self.textField];
}
屏幕上的“代码< >文本字段< /代码>出现在状态栏下的屏幕宽度中间,但是当我运行它时,代码>文本字段出现在状态栏后面的屏幕左上角。
也许问题是,我在iPhone6模拟器上用iOS8运行应用程序。但我不知道怎么解决它谢谢 使用
self.textField.translatesAutoresizingMaskIntoConstraints=NO
几乎告诉对象它并不真正关心帧,而是更多地依赖于您给它的约束。将其设置为YES
将获取帧并自动对其应用约束,以模拟您给定的帧
例如,它将应用约束以使帧显示在:CGRectMake(20.0f、35.0f、280.0f、30.0f)
。将其设置为NO
时,使用NSLayoutConstraint
并以编程方式创建约束
但在你的情况下,只需删除该行
self.textField.translatesAutoresizingMaskIntoConstraints = NO;
因为它默认设置为
YES
如果你将iPhone5模拟器设置为iOS 7,它的定位是否会有所不同(或更准确)?推测:你告诉它使用自动调整大小的掩码,而不是约束,但不提供任何自动调整大小的信息。我不知道先设置autoresizingMask
是否有帮助。当我在iOS 8和iphone 6模拟器中使用该代码时,它对我来说很好。。。