У меня есть интересная проблема, но я не знаю, как ее решить. Я пытаюсь расширить UIView с помощью @IBInspectable. Однако с помощью этого метода угловой радиус, по-видимому, устанавливается со стороны файлов пера по умолчанию, а не с фактическим размером представления.
Итак, когда в 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 в IB
Создан для iPhoneSE
Сборка для iPhone 7
«Просмотреть как» установлено как iPhone7
Сборка для iPhone SE
Сборка для iPhone 7