2013-12-23 150 views
0

我想創建一個包含一個圖像視圖與2個標籤和文本視圖的視圖。每個元素的內容將從SQLite數據庫讀入,所以我想使用Xcode 5的自動佈局來改變每個UI元素的高度以及它們之間的距離,根據每個元素的內容來有效地使用屏幕空間儘可能。我嘗試通過界面生成器中的自動佈局強制執行一些條件,但我不確定如何實現它們:使用動態UITextView,UIImageView和UILabel高地自動佈局

  • 標籤與其正下方的文本視圖之間的距離將保留相同
  • 所有元素的寬度將保持不變,他們都將被水平居中
  • 僅高度和元素的幀的y值將改變
  • 如果文本視圖的內容的高度超過的量屏幕高度可以顯示,圖像視圖的高度應減小到最小值,然後t的高度EXT意見應減少
  • 各元素之間的距離應等於(不包括相關的標籤和文本視圖之間的距離)

我能做到這一切的編程方式,但我想用自動佈局,因此視圖可以輕鬆適應屏幕尺寸的變化並防止錯誤。我對自動佈局的經驗很少,而且在這種情況下我需要複雜的規格。爲了使本來我是打算創建更清晰,這裏是的.xib文件的截圖:

screenshot

感謝您的幫助!

回答

0

看一看Autolayout Visual Format Language。他們在去年的一些自動佈局的WWDC視頻中討論了這一點。

這不完整,但您需要定義垂直和水平方向的約束。這是完整的,但希望能給你一個流氓的想法,讓你開始。

// Vertical alignment should be centered 
NSArray *constraints = [NSLayoutConstraint 
    constraintsWithVisualFormat:@"V:|[_imageView]-[_label1]-[_textBlock1]-[label2]-[textBlock2]-|" 
         options:NSLayoutFormatAlignAllCenterY 
         metrics:nil 
         views:viewsDictionary]; 

// Tell the views/text blocks to take the entire width. The labels will be fine centered on them I think 
NSArray *constraints = [NSLayoutConstraint 
    constraintsWithVisualFormat:@"H:|-[_imageView]-|" 
         options:NSLayoutFormatAlignAllCenterY 
         metrics:nil 
         views:viewsDictionary]; 

NSArray *constraints = [NSLayoutConstraint 
    constraintsWithVisualFormat:@"H:|-[_textBlock1]-|" 
         options:nil 
         metrics:nil 
         views:viewsDictionary]; 

NSArray *constraints = [NSLayoutConstraint 
    constraintsWithVisualFormat:@"H:|-[_textBlock2]-|" 
         options:nil 
         metrics:nil 
         views:viewsDictionary];     
相關問題