相关疑难解决方法(0)

Swift中UIButton的圆顶角

我知道我可以使用以下四个角来围绕:

 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?

rounded-corners uibutton ios swift

30
推荐指数
6
解决办法
3万
查看次数

不同的cornerRadius为每个角落Swift 3 - iOS

我想为Swift -3中的视图设置不同的角半径,我可以将每个角的半径设置为相同的值,如下面的帖子中提到的那样,如何设置cornerRadius仅用于左上角和顶部UIView的右角?

有没有办法按以下格式设置转角半径?半径左上:18半径右上:18半径右下:3半径左下:18

cornerradius ios swift3

15
推荐指数
3
解决办法
1万
查看次数

目前设置UIView角落半径的"正确"方法是什么?

设置UIView角的半径可以通过以下方式完成:

  1. 设置layercornerRadius属性:

    view.layer.cornerRadius = 5;
    view.layer.masksToBounds = true;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 涂上面膜:

    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)
  3. 覆盖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)

uiview ios swift

10
推荐指数
5
解决办法
5878
查看次数

如何仅创建具有左上角和左下角半径的圆角UIButton

我需要像这样创建一个左上角和左下角半径的按钮 在此输入图像描述.我尝试创建以下扩展,取自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)

此代码生成以下形状 在此输入图像描述

那么为什么左上角和左下角看不见呢?我该怎么办才能让它们可见?

uibutton ios uibezierpath swift

4
推荐指数
1
解决办法
3411
查看次数

在 Swift 中使用 UIRectCorner 的圆角矩形不起作用

我正在尝试为我在故事板中创建的 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。这就是我得到的:

顶部单元格显示问题。 似乎只应用了 .TopLeft,即使它是在两个不同的视图上调用的

如果有人对可能发生的事情有任何想法,我将不胜感激。

谢谢。

xcode uitableview ios swift2

3
推荐指数
1
解决办法
2275
查看次数