我是新來的iOS自動佈局。原則上我非常喜歡這個概念,但是這讓我堅持要完成最簡單的事情。我懷疑我仍然錯過了一些簡單的基本原則。我正在嘗試通過實際操作學習,並在實際使用應用程序之前獲得基礎知識,因此我正在創建非常簡單的測試項目。這是一個非常簡單的方法,不會像預期的那樣工作。首先是工作的部分。在IB,我添加了一個視圖以填充整個視圖 - 控制和XCode的自動設置約束頂部/底部/上升/下降和空間爲0。當IB完成的,它按預期工作:以編程方式設置約束與在IB中設置它們不同?
旋轉到
太好了!
現在我試圖做同樣的事情在代碼:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIView *redView = [[UIView alloc] initWithFrame:self.view.bounds];
redView.backgroundColor = [UIColor redColor];
[self.view addSubview:redView];
redView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0f constant:0.0f]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1.0f constant:0.0f]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0f constant:0.0f]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1.0f constant:0.0f]];
}
這是所有的代碼中有比單視圖應用程序的默認代碼等。
當我運行上面的代碼,試圖反映同樣的事情,因爲我與IB得到編程,我得到這個旋轉後:
怎麼說,同樣的限制導致不同的結果?這可能是我錯過的非常簡單和令人尷尬的愚蠢行爲。幫幫我!!!
謝謝!這工作(在添加失蹤|在V:| [redView] ...但爲什麼這個heck不會我的其他代碼工作?它是等效的到什麼IB顯示,不是嗎??? – user1459524
是的,我錯過了一個管道。修正。而且,說實話,我不知道。我發現VFL,並沒有進一步尋找我的AutoLayout需要。 – geraldWilliam
嗨! 6個月後,我遇到了同樣的問題,但我想做t直接使用mycontroller.view的帽子,而不是mycontroller.view中的視圖。它只是......沒有! – shinyuX