簡體   English   中英

如何使自動版式調整以適應不斷變化的圖像尺寸

[英]How to make AutoLayout adjust to changing image sizes

我有一個帶圖像視圖的nib文件和兩個UILabel,一個位於圖像上方,一個位於下方。 筆尖用於屏幕上的每個頁面,並且我的視圖控制器使用嵌套的switch語句確定要用於每個屏幕的圖像和文本。 我遇到的問題是圖像大小各異,有時圖像下方的標簽沒有出現。 我希望它始終出現在圖像下方4px,所以我將垂直空間約束設置為常數4,但是使用log語句打印imageview框架和label框架的原點和尺寸告訴我,它的放置位置大於下方4px,可能不在屏幕底部。 我已經附上了一些截圖來說明問題。 第一個屏幕截圖顯示了所有顯示在正確位置的東西。 是否需要添加一些代碼以使標簽始終正確顯示,而不管圖像高度如何?

正確

標簽未顯示 標簽未顯示

這是帶有約束的nib文件的屏幕截圖: Interface Builder中的Nib文件

這是來自視圖控制器的用於設置內容的代碼示例:

@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;

設置圖像后,將底部空間的大小減小到Superview約束並在self.view上調用updateConstraintsIfNeeded可以解決此問題,但在UILabel中有很多文本的幾頁上除外。 我還必須縮小這些頁面上圖像的大小,以使標簽出現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM