如何使AutoLayout适应不断变化的图像尺寸

时间:2015-09-07 00:44:27

标签: ios uiimageview autolayout interface-builder

我有一个带有图像视图的nib文件和两个UILabel,一个在图像上方,另一个在下面。 nib用于屏幕上的每个页面,我的视图控制器使用嵌套的switch语句来确定用于每个屏幕的图像和文本。我遇到的问题是图像有各种尺寸,有时图像下方的标签不会出现。我希望它总是出现在图像下方4px,所以我设置了一个常量为4的垂直空间约束,但使用日志语句来打印图像视图框架和标签框架的原点和大小告诉我它是什么放置在屏幕下方4px以上,可能不在屏幕底部。我附上了一些截图来说明问题。第一个屏幕截图显示了所有出现在正确位置的内容。我是否需要在代码中添加一些东西,以使标签始终正确显示,无论图像高度如何?

Correct

Label not showing Label not showing

以下是带有约束的nib文件的屏幕截图: 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;

0 个答案:

没有答案