2015-09-07 28 views
0

我有一個圖像視圖和兩個UILabels的筆尖文件,一個在圖像上方,另一個在下方。筆尖用於屏幕上的每個頁面,我的視圖控制器使用嵌套的switch語句來確定每個屏幕使用的圖像和文本。我遇到的問題是圖像大小不一,有時圖像下方的標籤不會顯示。我希望它始終顯示在圖像下方4px,所以我設置了一個垂直空間約束,其常量爲4,但使用日誌語句來打印imageview框架和標籤框架的原點和大小告訴我,它放置的不止一個4px以下,可能在屏幕底部。我附上了一些截圖來說明問題。第一個屏幕截圖顯示出現在正確位置的所有內容。是否需要添加代碼以使標籤始終正確顯示,而不管圖像高度如何?如何使AutoLayout調整爲更改圖像大小

Correct

Label not showing Label not showing

這裏是與約束筆尖文件的屏幕截圖: Nib file in Interface Builder

而這裏是將內容從視圖控制器的代碼的一個例子:

@implementation ContentViewController 

- (id)initForContentSet:(int)setNumber andIndex:(int)indexNumber { 
    if (self = [super initWithNibName:@"ContentView" bundle:nil]) { 
     self.contentSet = setNumber; 
     self.indexNum = indexNumber; 
    } 
    return self; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [_contentImageView setContentMode:UIViewContentModeScaleAspectFit]; 
    [_contentText setLineBreakMode:NSLineBreakByWordWrapping]; 
//set up content 
switch (_contentSet) { 
    case 1: 
     switch (_indexNum) { 
      case 0: 
       //first exposure page 
       [_pageHeader setText:@"The Exposure Triangle"]; 
       [_contentImageView setImage:[UIImage imageNamed:@"exposure-triangle.jpg"]]; 
       [_contentText setText:@"Balance the amount of available light with aperture, ISO, and shutter speed settings."]; 
       break; 
      case 1: 
       //second exposure page 
       [_pageHeader setText:@"Example"]; 
       [_contentImageView setImage:[UIImage imageNamed:@"exposureexample.jpg"]]; 
       [_contentImageView sizeToFit]; 
       [_contentText setText:@"An underexposed photo is too dark, while an overexposed one looks washed out."]; 
       break; 
      default: 
       break; 
     } 
     break; 
+1

首先,使用視圖調試來找出標籤真正的位置! – matt

+1

看看這個:http://stackoverflow.com/questions/26833627/with-auto-layout-how-do-i-make-a-uiimageviews-size-dynamic-depending-on-the-im –

回答

0

在設置圖像解決了問題後,減少底部空間的大小以超級查看約束,並調用updateConstraintsIfNeededNewNext,除了在UILabel中有很多文本的幾個頁面之外。我還必須縮小這些頁面上圖像的大小,以使標籤出現。