2015-09-07 50 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中有很多文本的几个页面之外。我还必须缩小这些页面上图像的大小,以使标签出现。