2013-07-20 65 views
1

在我的應用程序,我有以下設置:Autolayout:添加視圖打破我的工作調整大小 - 想法?

的TextView(self.textView)

工具欄

當鍵盤變得可見,我添加了一個約束條件將文本視圖的底部向上推動所需的像素數。

spacer =[NSLayoutConstraint 
            constraintWithItem:self.textView 
            attribute:NSLayoutAttributeBottom 
            relatedBy:NSLayoutRelationEqual 
            toItem:self.view 
            attribute:NSLayoutAttributeBottom 
            multiplier:1.0 
            constant:-height]; 
[self.view addConstraint:spacer]; 

當鍵盤消失時,我刪除約束。

這工作很好。然而...

我想添加一個位於文本視圖頂部的imageview。這似乎很簡單。但是現在「解僱鍵盤」的大小被打破了。

下面是我用來創建imageview並將其固定到textview界限的代碼。

self.overlay = [[UIImageView alloc] init]; 

[self.overlay setTranslatesAutoresizingMaskIntoConstraints:NO]; 
[self.view addSubview:self.overlay]; 

[self.view addConstraint: [NSLayoutConstraint 
          constraintWithItem:self.overlay 
          attribute:NSLayoutAttributeBottom 
          relatedBy:NSLayoutRelationEqual 
          toItem:self.textView 
          attribute:NSLayoutAttributeBottom 
          multiplier:1.0 
          constant:0]]; 
[self.view addConstraint: [NSLayoutConstraint 
          constraintWithItem:self.overlay 
          attribute:NSLayoutAttributeTop 
          relatedBy:NSLayoutRelationEqual 
          toItem:self.textView 
          attribute:NSLayoutAttributeTop 
          multiplier:1.0 
          constant:0]]; 
[self.view addConstraint: [NSLayoutConstraint 
          constraintWithItem:self.overlay 
          attribute:NSLayoutAttributeLeft 
          relatedBy:NSLayoutRelationEqual 
          toItem:self.textView 
          attribute:NSLayoutAttributeLeft 
          multiplier:1.0 
          constant:0]]; 
[self.view addConstraint: [NSLayoutConstraint 
          constraintWithItem:self.overlay 
          attribute:NSLayoutAttributeRight 
          relatedBy:NSLayoutRelationEqual 
          toItem:self.textView 
          attribute:NSLayoutAttributeRight 
          multiplier:1.0 
          constant:0]]; 
[self.view layoutIfNeeded]; 

下面是它應該是什麼樣子:鍵盤前

初步顯示

Initial before keyboard showing

鍵盤顯示

Keyboard showing

鍵盤刪除。佈局應該回到初始狀態,而是我得到這個

Should be back to initial state, but instead I get this

回答

0

解決方案:工具欄設置內容擁抱優先1.000,以避免它得到所有伸出。

相關問題