Ios CGRectMake不';行不通

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

我正在基于iOS 7编写“iOS编程食谱”中的示例。我需要创建
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模拟器中使用该代码时,它对我来说很好。。。