2017-04-14 60 views
0

我申請cornerRadius通常以自定義視圖這樣:的UIView的cornerRadius不影響視圖均勻

self.layer.cornerRadius = self.frame.size.height/2

然而,我注意到,在UIView產生的角被均勻塗抹。具體來說,如附圖所示,頂部比底部更早開始淡入角落。在放大時,即使在正常的觀看級別,也可以看到不平坦的轉彎。 enter image description here

有沒有人也遇到過這個問題能解決它?

+0

出於好奇,這種詳細的檢查何時出現? – Rikh

+0

你認爲的高度是多少? – CoolPenguin

+0

您可能正在嘗試此代碼'self.layer.cornerRadius = self.frame.size.height/2' in'viewDidLoad'把它放在'viewDidLayoutSubviews'中 – Dhiru

回答

1

你打電話給這條線?

self.layer.cornerRadius = self.frame.size.height/2 

如果cornerRadius不是FINAL大小的一半,通常會發生此錯誤。 例如:你把它設置在viewDidLoad中,自身的高度是100,cornerRadius現在是50,但是在完成自己的佈局之後,它的高度變成90,角落Radius仍然是50.

有兩種方法可以解決這個問題:

  1. 如果您使用固定的高度約束,你可以設置cornerRadius任何你想要的:self.layer.cornerRadius = self.someHeightConstraint.constraint/2

  2. 如果你不這樣做,設置cornerRadius視圖完成佈局後(在其超級視圖的viewDidLayoutSubviews中)

+0

這似乎是一個問題的可能原因,所以我1.將cornerRadius設置爲一個固定數字並2.調用layoutSubviews。但是,問題依然存在。將很高興貼上更多的代碼。視圖層次結構是:1.'tableViewCell.containerView' - > 2.'foregroundView' - > 3.'graphicView'問題在'graphicView' – daspianist