我知道我可以使用以下四个角来围绕:
myBtn.layer.cornerRadius = 8
myBtn.layer.masksToBounds = true
Run Code Online (Sandbox Code Playgroud)
由于我只想围绕第二轮,我做了一些研究,发现了这个:
extension UIView {
func roundCorners(corners:UIRectCorner, radius: CGFloat) {
let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let mask = CAShapeLayer()
mask.path = path.CGPath
self.layer.mask = mask
}
}
Run Code Online (Sandbox Code Playgroud)
这被称为:
view.roundCorners([.TopLeft , .TopRight], radius: 10)
Run Code Online (Sandbox Code Playgroud)
然而,这对于UIButton不起作用.当我将扩展名切换为类型UIButton并将其传递给按钮时,输出如下所示:
问题是,我如何使其适应UIButton?
我想为Swift -3中的视图设置不同的角半径,我可以将每个角的半径设置为相同的值,如下面的帖子中提到的那样,如何设置cornerRadius仅用于左上角和顶部UIView的右角?
有没有办法按以下格式设置转角半径?半径左上:18半径右上:18半径右下:3半径左下:18
设置UIView角的半径可以通过以下方式完成:
设置layer的cornerRadius属性:
view.layer.cornerRadius = 5;
view.layer.masksToBounds = true;
Run Code Online (Sandbox Code Playgroud)涂上面膜:
func roundCorners(corners:UIRectCorner, radius: CGFloat) {
let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let mask = CAShapeLayer()
mask.path = path.cgPath
self.layer.mask = mask
}
Run Code Online (Sandbox Code Playgroud)覆盖draw(_:):
func draw(_ rect: CGRect) {
// Size of rounded rectangle
let rectWidth = rect.width
let rectHeight = rect.height
// Find center of actual frame to set rectangle in middle
let xf: CGFloat = (self.frame.width …Run Code Online (Sandbox Code Playgroud)我需要像这样创建一个左上角和左下角半径的按钮
.我尝试创建以下扩展,取自stackoverflow之一:
extension UIButton {
func roundCorners(corners:UIRectCorner, radius: CGFloat) {
self.layer.borderColor = GenerateShape.UIColorFromHex(0x989898, alpha: (1.0-0.3)).CGColor
self.layer.borderWidth = 1.0
let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let mask = CAShapeLayer()
mask.path = path.CGPath
self.layer.mask = mask
}
}
Run Code Online (Sandbox Code Playgroud)
然后调用这样的方法:
self.collectionBtn.roundCorners(.TopLeft | .BottomLeft, radius: cornerRadius)
Run Code Online (Sandbox Code Playgroud)
那么为什么左上角和左下角看不见呢?我该怎么办才能让它们可见?
我正在尝试为我在故事板中创建的 UITableViewCell 创建一个圆角矩形。我在 Xcode 7 中使用 Swift 2。我在原型单元格中有两个视图,topView 和 Bottom 视图。我希望 topView 的顶角是圆的,而 bottomView 的角是圆的。
在awakeFromNib(稍后可能会去其他地方更好):
...
self.topView.backgroundColor = UIColor.redColor()
self.bottomView.backgroundColor = UIColor.grayColor()
self.setMaskToView(self.topView, corners:UIRectCorner.TopLeft.union(UIRectCorner.TopRight))
self.setMaskToView(self.bottomView, corners: UIRectCorner.BottomLeft.union(UIRectCorner.BottomRight))
...
Run Code Online (Sandbox Code Playgroud)
在单独的函数中(基于对另一个堆栈溢出帖子的回答):
func setMaskToView(view : UIView, corners: UIRectCorner) {
let rounded = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: 10, height: 10))
let mask = CAShapeLayer()
mask.path = rounded.CGPath
view.layer.mask = mask
}
Run Code Online (Sandbox Code Playgroud)
请注意,我还尝试了 [.TopRight, .TopLeft] 而不是 union(),基于各种其他堆栈溢出帖子。似乎什么都改变不了。还绝望地清理并重新启动了Xcode。这就是我得到的:
如果有人对可能发生的事情有任何想法,我将不胜感激。
谢谢。
ios ×5
swift ×3
uibutton ×2
cornerradius ×1
swift2 ×1
swift3 ×1
uibezierpath ×1
uitableview ×1
uiview ×1
xcode ×1