ios - 应用渐变时按钮拉伸(stretch)

标签 ios swift button gradient

首先,我对 Storyboard 中的按钮设置约束。然后,我用代码对其进行了编辑,使其看起来不错。 当我将渐变函数应用于按钮时,它会变得比以前更大。你如何解决这个问题?

extension UIView {
    func applyGradient(colours: [UIColor]) -> Void {
        self.applyGradient(colours, locations: nil)
    }

    func applyGradient(colours: [UIColor], locations: [NSNumber]?) -> Void {
        let gradient: CAGradientLayer = CAGradientLayer()
        gradient.frame = self.bounds
        gradient.colors = colours.map { $0.CGColor }
        gradient.locations = locations
        self.layer.insertSublayer(gradient, atIndex: 0)
    }
}

我只是将它应用到一个按钮上,然后.. Here is the pic...

现在看起来像这样......梯度界限什么也没做 It goes way outside frame PLZPLZPLZ 尝试帮助我:) 我很感谢你到目前为止的帮助

最佳答案

self.layer.masksToBounds = true 添加到函数中。这意味着您添加的子图层不会绘制在按钮的原始框架之外

编辑: 如果您也想要阴影,则需要将 self.layer.masksToBounds 设置为 false,因为它也会剪切阴影。

尝试gradient.frame = self.layer.bounds也许可以?

关于ios - 应用渐变时按钮拉伸(stretch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38549988/

相关文章:

ios - 如何让UIView有透明渐变的效果?

objective-c - 使用 Xcode 9 编译框架

ios - 在 IOS Swift 中,如何使白色文本在任何背景上都可见,就像在 snapchat 故事中一样

arrays - Swift Int 数组到 MetalBuffer<Int>

java - 在 Activity 2 的代码中更改 Activity 1 中按钮的值

ios - 模态视图 Controller UI 在 presentViewController :animated:completion: 后没有响应

ios - AV Foundation Framework 视频质量检查

ios - SwiftUI WidgetKit : How to anchor views to the top

android - Android 上的横向按钮菜单

ios - 第一次按按钮不起作用,但第二次就可以了