[英]CGRectMake doesn't work
我正在研究基於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];
}
在本書的屏幕快照上, textField
出現在狀態欄下方屏幕寬度的中間,但是當我運行它時, textField
出現在狀態欄下方屏幕的左上角。
可能的問題是,我在裝有iOS 8的iPhone 6模擬器上運行應用程序。但是我不知道如何解決它。
謝謝!
使用self.textField.translatesAutoresizingMaskIntoConstraints = NO;
幾乎告訴對象它並不真正在乎框架,而是更多地依賴於您賦予它的約束。 將其設置為YES
將獲取框架並自動對其施加約束以模仿您提供的框架。
例如,它將應用約束以使幀出現在: CGRectMake(20.0f, 35.0f, 280.0f, 30.0f)
。 將其設置為NO
使用NSLayoutConstraint
並以編程方式創建約束。
但是在您的情況下,只需刪除行
self.textField.translatesAutoresizingMaskIntoConstraints = NO;
因為默認情況下它設置為YES
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.