我試圖完成的事情看起來非常直截了當,但我已經在這一整天了,我無法弄清楚。使用XIBs和自動佈局來操作視圖層次結構
我有一個故事板(它還沒有使用自動佈局)和一個帶有分頁滾動視圖的場景。我也有2個XIB,我在代碼中實例化。第一個XIB(A)有一個UILabel
和一個通用的UIView
。第二個XIB(B)只有+ UIButton
。最終目標是將B加載到A中的通用視圖中(水平居中和標籤下的「默認值」),並使A在滾動視圖中佔據整個頁面。
當我調整XIB A的視圖時,通用視圖的大小會擴大和縮小,但始終保持標籤下方的默認值。當我調整XIB B的視圖時,按鈕排列保持居中(這是我想要的)。這是我想要的行爲。
用下面的代碼,但是,它不工作:
View A *viewA = [[ViewA alloc] initWithFrame:CGRectZero];
viewA.textLabel.text = @"A label with a rather long text";
ViewB *viewB = [[ViewB alloc] initWithFrame:CGRectZero];
[viewA setTranslatesAutoresizingMaskIntoConstraints:NO];
[viewB setTranslatesAutoresizingMaskIntoConstraints:NO];
[viewA.customView addSubview:viewB]; // customView is the generic view
這使我有以下幾點:
(白色區域爲滾動視圖,紅色區域視圖A,綠色區域視圖B.)
我試着添加一個約束條件,讓視圖B佔據其超級視圖的整個寬度:
[viewA.customView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[viewB]|" options:0 metrics:0 views:NSDictionaryOfVariableBindings(viewB)]];
但導致這個:
我能做些什麼,以獲得在綠色區域中心的按鈕?我不在乎綠色區域是否完全被紅色區域覆蓋,或紅色區域是否正好位於綠色區域的中央。
在XIB中啓用了自動佈局,但故事板仍然適用於支柱和彈簧。 –
您是否檢查過您的綠色視圖的框架尺寸是否合適,它看起來像是超出了可見區域,並且按鈕可能位於中心位置 – ceekay