2014-09-28 76 views
0

我正在研究基於iOS 7的「iOS編程手冊」中的示例。我需要創建UITextField並將其添加到ViewControllerCGRectMake不起作用

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模擬器上的應用程序,但我不知道如何解決它。

謝謝!

+1

如果您使用設置爲iOS 7的iPhone 5模擬器,它的位置是否有所不同(或更正確)? – 2014-09-28 13:09:59

+0

猜測:您正在告訴它使用自動調整掩碼而不是約束,但不提供任何自動調整信息。我想知道是否首先設置'autoresizingMask'會有所幫助。 – 2014-09-28 13:13:41

+0

當我在iOS 8和iPhone 6模擬器中使用該代碼時,它適用於我... – Mike 2014-09-28 13:16:47

回答

0

使用self.textField.translatesAutoresizingMaskIntoConstraints = NO;幾乎告訴對象它並不真正關心框架,但更多地依賴於您給它的約束。將其設置爲YES將獲取框架並自動將約束應用於它以模仿您提供的框架。

例如,它將應用約束條件使框架出現在:CGRectMake(20.0f, 35.0f, 280.0f, 30.0f)。將其設置爲NO時,請使用NSLayoutConstraint並以編程方式創建約束。

但在你的情況只是刪除線

self.textField.translatesAutoresizingMaskIntoConstraints = NO; 

,因爲它是默認設置爲YES