Jac*_*owe 7 interface-builder uiview ios
什么类型的价值[.layerMaxXMinYCorner, .layerMinXMinYCorner]?是否可以在Interface Builder中的View上设置此参数?我知道如何设置layer.borderWidth,layer.borderUIColor并layer.cornerRadius在Identity Inspector中,但我无法找出用于蒙面角的正确类型和值.
谢谢!
可靠的人
更新:以下是每个组合的整数值(以圆整为单位):
右下角是8-15
两个顶角都在3,7,11,15
maskedCorners是一个 CACornerMask,它是一个 OptionSet,或位掩码。原始值是一个整数:在代码中,您可以尝试打印 的值someView.layer.maskedCorners.rawValue,或通过 设置它someView.layer.maskedCorners.setValue(3, forKey: "maskedCorners")。
因此,您应该能够layer.maskedCorners在 Interface Builder中将 的值设置为整数 3(或您需要的任何值),我不明白为什么这样做会不安全。虽然如果你忘记了,弄清楚整数值实际映射到哪一组角会很痛苦。
我只是随机遇到了这个相同的“问题”并编写了另一个解决方案,使用扩展(无子类化)和IB中每个角的视觉切换(无需手动设置/添加位标志)。
请记住,默认设置为“On /” true(以便“cornerRadius”影响视图的所有角)。如果您想圆化除一个角之外的所有角,只需将该特定角设置为 即可false。
import UIKit
@IBDesignable
public extension UIView {
@IBInspectable var cornerRadius: CGFloat {
get { return layer.cornerRadius }
set { layer.cornerRadius = newValue }
}
@IBInspectable var topLeft: Bool {
get { return layer.maskedCorners.contains(.layerMinXMinYCorner) }
set {
if newValue {
layer.maskedCorners.insert(.layerMinXMinYCorner)
} else {
layer.maskedCorners.remove(.layerMinXMinYCorner)
}
}
}
@IBInspectable var topRight: Bool {
get { return layer.maskedCorners.contains(.layerMaxXMinYCorner) }
set {
if newValue {
layer.maskedCorners.insert(.layerMaxXMinYCorner)
} else {
layer.maskedCorners.remove(.layerMaxXMinYCorner)
}
}
}
@IBInspectable var bottomLeft: Bool {
get { return layer.maskedCorners.contains(.layerMinXMaxYCorner) }
set {
if newValue {
layer.maskedCorners.insert(.layerMinXMaxYCorner)
} else {
layer.maskedCorners.remove(.layerMinXMaxYCorner)
}
}
}
@IBInspectable var bottomRight: Bool {
get { return layer.maskedCorners.contains(.layerMaxXMaxYCorner) }
set {
if newValue {
layer.maskedCorners.insert(.layerMaxXMaxYCorner)
} else {
layer.maskedCorners.remove(.layerMaxXMaxYCorner)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
779 次 |
| 最近记录: |