我爲用戶輸入製作了一個很酷的自定義數字鍵盤。它由4個組成,它們本身嵌套在父母UIStackView
內。我想讓按鈕變圓。所需的外觀是這樣的:UIStackView中出現意外的圓角UIButton行爲
這裏是圓邊角代碼:
for (UIStackView *subStack in self.mainStackView.arrangedSubviews)
{
for (UIButton *button in subStack.arrangedSubviews)
{
button.layer.borderWidth = 1.0f;
button.layer.borderColor = [[UIColor orangeColor] CGColor];
button.layer.cornerRadius = (button.frame.size.width)/2.0f;
button.layer.masksToBounds = YES;
button.clipsToBounds = YES;
[button setShowsTouchWhenHighlighted:YES];
NSLog(@"button.tag = %ld", (long)button.tag);
}
}
[self.view setNeedsLayout];
的問題是,當我把這個代碼放到viewDidLoad
或viewWillAppear
,按鈕如下圖所示:
完全圓潤的按鈕不出現,除非我把代碼放在viewDidAppear
。但是在呈現圓之前有一個明顯的延遲。
任何人都有一個想法是什麼導致了奇怪的行爲?我想知道它是否與UIStackViews
本身有關,因爲我遇到了其他問題。
使用的Xcode 7.3.1和埃爾卡皮坦10.11.3
編輯
我想在下面@Murat Tezyapar的答案的建議,但代碼不會被調用在viewDidLayoutSubviews,也不在viewWillLayoutSubviews(我認爲這值得一試......)。我做了一些NSLogging,並發現只有代碼在viewDidAppear中執行時,按鈕才能達到其合適的大小(70點)。如上所述,這些圈子仍然在按鈕本身和其他所有內容之後呈現。
謝謝。請參閱上面的編輯... – rattletrap99
我在堆棧視圖內循環查看視圖,並且在視圖中使用圓化代碼將僅出現圓角,而不是完美的圓圈。當我將viewWillAppear的環化代碼移到viewDidLayoutSubviews時,問題就解決了。感謝您的建議! –