iOS:如何在按钮中显示阴影图像?

Posted

技术标签:

【中文标题】iOS:如何在按钮中显示阴影图像?【英文标题】:iOS: How to show a shadow image in a button? 【发布时间】:2019-11-25 15:51:05 【问题描述】:

我的设计师给我发了一个带有阴影的按钮图像,这很复杂,所以我需要使用按钮图像而不是自己实现阴影。例如,可点击的红色区域为20*20,带阴影的整张图片为60*60。红色区域不在图像的中心。

问题是我想做一个 20*20 的按钮,它可以显示整个图像。

我正在使用的工具是将 UIImageView (size=60*60) 添加到按钮 (size=20*20) 中。还有其他方法吗?我认为有一种方法可以只使用图像和按钮而无需额外的 UIImageView

【问题讨论】:

......***.com/a/32468101/1101930 【参考方案1】:

这是一个简单的例子:

func createView(x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat) 

        // creating the container view
        let view = UIView()
        view.frame = CGRect(x: x, y: y, width: width, height: height)
        view.backgroundColor = .systemRed

        // creating the image view, set the image to the one you want
        let imageView = UIImageView()
        imageView.frame = CGRect(x: 0, y: 0, width: width, height: height)
        let image = UIImage(named: "myImage")
        imageView.image = image

        // creating the button
        let button = UIButton() 
        button.frame = CGRect(x: 0, y: 0, width: width / 3, height: height / 3)
        button.backgroundColor = .systemBlue

        // adding a tap response functionality to the button
        button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)

        // adding the button and image view to the container
        view.addSubview(imageView)
        view.addSubview(button)

        //adding the container to the superview
        self.view.addSubview(view)

    

添加处理按钮点击的方法:

    @objc func buttonTapped() 
        // all the code for handling a tap goes here
        print("button tapped")
    

最后在viewDidLoad() 中调用createView()

override func viewDidLoad() 
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        createView(x: 100, y: 100, width: 60, height: 60)
    

需要注意的是,按钮和图像的 x 和 y 值并不是指超级视图的值,而是容器视图的值。

如果要添加阴影图像,它必须包含在 Assets.xcassets 文件夹中。从那里,您只需将名称更改为图像的名称即可上传。

【讨论】:

以上是关于iOS:如何在按钮中显示阴影图像?的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 中应用模糊滤镜时如何从图像中删除黑色阴影矩形?

如何删除 ios 14 的导航栏图像阴影? [关闭]

如何在颤动中显示具有顶部和底部渐变阴影的图像?

如何在 UIImageView iOS 上设置阴影渐变图像

带有自定义阴影图像的 UIButton

iOS 如何从 UISlider 中删除发光/阴影