我有一個有趣的問題,但我不知道如何解決它。我試圖用@IBInspectable擴展UIView。但是,使用此方法時,角半徑似乎是從nib文件的默認側設置的,而不是視圖的實際大小。圓UIView不是一個完整的圓
因此,在IB中,我將「查看爲」設置爲iPhoneSE併爲iPhoneSE構建,視圖爲圓形。但是,如果我爲iPhone7構建,角落不會完全變成圓形。相反,如果我將「查看爲」設置爲iPhone7併爲iPhone7創建,則該視圖爲圓形,但如果爲iPhoneSE構建角落,則會出現過度圓角。
圖片和下面的代碼:
擴展
extension UIView {
@IBInspectable var cornerRadius:Double {
get {
return Double(layer.cornerRadius)
}
set {
layer.cornerRadius = CGFloat(newValue)
layer.masksToBounds = newValue > 0
}
}
@IBInspectable var circleView:Bool {
get {
return layer.cornerRadius == min(self.frame.width, self.frame.height)/CGFloat(2.0) ? true : false
}
set {
if newValue {
layer.cornerRadius = min(self.frame.width, self.frame.height)/CGFloat(2.0)
layer.masksToBounds = true
}
else{
layer.cornerRadius = 0.0
layer.masksToBounds = false
}
}
}
}
「查看」
專爲iPhoneSE
建立iPhone 7設置爲iPhoneSE在IB
「查看方式」 設置爲iPhone7
建立iPhone SE
建立iPhone 7
當你在IB中選擇Circular UIView時,你可以截取自動佈局設置和截圖嗎? –
@SamuelTulach在上面添加了這些。 – steventnorris