【发布时间】:2018-04-18 00:43:16
【问题描述】:
我想制作一个左上角和左下角半径 = 15 的按钮,所以我让这个类来实现它
class pathBUtton:UIBUtton{
override func layoutSubviews() {
super.layoutSubviews()
let shapeLayer = CAShapeLayer()
let path = UIBezierPath.init(roundedRect: self.bounds, byRoundingCorners: [.topLeft,.bottomLeft], cornerRadii: CGSize.init(width: 15.0, height: 0.0))
shapeLayer.lineWidth = 5.0
shapeLayer.fillColor = UIColor.blue.cgColor
shapeLayer.path = path.cgPath
shapeLayer.strokeColor = UIColor.clear.cgColor
self.backgroundColor = UIColor.clear
self.layer.addSublayer(shapeLayer)
}
在 IB 中将按钮类设置为 pathButton 后,未显示按钮文本,请参见 image,并且 cashapelayer 不适合按钮框架,白色位于蓝色后面。蓝色部分是按钮,白色是包含按钮和标签的视图以及其他按钮。 在视图控制器中,我将视图角半径设置为 15
valoraView.layer.cornerRadius = 15
但是视图的半径和路径中 shapelayer 的半径之间存在差异。 所以任何帮助都将不胜感激
【问题讨论】:
-
为什么不直接设置那两个角的圆角半径呢?不需要形状层,而且在任何情况下,形状层实际上都不会进行任何舍入(它不会掩盖按钮)。
标签: swift uibutton cashapelayer