当前位置: 首页 > 面试题库 >

Swift中的UIButton的圆角

令狐声
2023-03-14
问题内容

我知道我可以使用以下方法绕过所有四个角:

 myBtn.layer.cornerRadius = 8
 myBtn.layer.masksToBounds = true

因为我只是想第二轮中,我做了一些研究,发现这个:

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
    }
}

如下所示:

view.roundCorners([.TopLeft , .TopRight], radius: 10)

但是,这不适用于UIButton。当我将扩展名切换为UIButton类型并将其传递给button时,输出如下所示:

在此处输入图片说明

问题是,如何使它适应于UIButton?


问题答案:

添加UIButton扩展:

extension UIButton{
    func roundedButton(){
        let maskPath1 = UIBezierPath(roundedRect: bounds,
            byRoundingCorners: [.topLeft , .topRight],
            cornerRadii: CGSize(width: 8, height: 8))
        let maskLayer1 = CAShapeLayer()
        maskLayer1.frame = bounds
        maskLayer1.path = maskPath1.cgPath
        layer.mask = maskLayer1
    }
}

在viewDidAppear / viewDidLayoutSubviews中调用:

btnCorner.roundedButton()

按钮角输出:

在此处输入图片说明



 类似资料:
  • 问题内容: 我在Swift中制作了一个UIButton子类,以在选择时执行自定义绘图和动画 Swift 中的ObjC中的覆盖相当于什么? 我试过了 所以我可以实现一个观察者,但是我得到 问题答案: 像其他提到的一样,您可以使用它来检测更改。但是,在替代中,您不需要将值分配给super,而只是观察现有的更改。 您可以从以下游乐场观察到几件事: 覆盖的属性仍会为调用super 。您可以知道,因为状态从

  • 问题内容: 我正在尝试使用Swift更改UIButton的字体… 但是已弃用,否则我不确定如何更改字体。 有什么建议? 问题答案: 使用代替。该属性在iOS 3.0中已弃用。它在Objective- C中也不起作用。是用于在上显示标题的标签。 但是,在设置标题文本时,您只能使用。请勿用于直接为标题设置任何文本。

  • 问题内容: 我正在尝试使用Swift更改UIButton的图像…我该怎么办 这是OBJ-C代码。但是我不知道Swift: 问题答案: 从您的Obc-C代码中,我认为您想为按钮设置图片,因此请尝试以下方式: 简而言之: 对于Swift 3:

  • 问题内容: 我正在尝试以编程方式构建UI。如何使该动作起作用?我正在用Swift开发。 viewDidLoad中的代码: 问题答案: 您只是在选择器名称的末尾缺少冒号。因为按下需要一个参数,所以冒号必须在该位置。而且,您按下的函数不应嵌套在viewDidLoad中。 编辑:更新以反映Swift 2.2中的最佳实践。应该使用#selector()而不是不推荐使用的文字字符串。

  • UIButton-Bootstrap 是 UIButton 的分类,实现了 Bootstrap 3.0 风格的按钮效果。无需任何图片,纯代码实现(Quartz Core)具有扁平化、Bootstrap风格的按钮。 [Code4App.com]

  • 问题内容: 如何在Swift iOS Playground上制作带有圆角的UIImageView? 内部需要填充一种颜色。 问题答案: 结果: