0

我刚刚在 Swift 中为 iOS 启动了一个应用程序,我正在以编程方式进行设计(我的意思是我没有使用故事板)

我有一个内部带有图像的 UIButton,我希望图像填充整个按钮。现在它只在我的按钮中显示图像,但比按钮小,在按钮框架的顶部居中。

我的代码是:

    let buttonLocation = UIButton(frame: CGRect(x: 0, y: 0, width: buttonRoundedSize, height: buttonRoundedSize))
    buttonLocation.setImage(UIImage(named: "locate_button"), for: .normal)
    buttonLocation.backgroundColor = .white
    buttonLocation.layer.cornerRadius = frame.width / 2
    buttonLocation.myExtension()

这是我尝试过的事情(这些都不起作用):

    self.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
    self.autoresizingMask = .flexibleWidth
    self.autoresizingMask = .flexibleHeight
    self.imageView?.contentMode = .scaleAspectFill

如果我只是放置 contentMode 行,它也不起作用。我检查过的 imageView 没有返回 nil ..

谢谢!

4

5 回答 5

0

将 的contentMode设置buttonLocation's imageViewscaleAspectFill或覆盖scaleToFill整个framebutton

let buttonLocation = UIButton(frame: CGRect(x: 0, y: 0, width: 200, height: 500))
buttonLocation.setImage(UIImage(named: "image"), for: .normal)
buttonLocation.backgroundColor = .gray
buttonLocation.layer.cornerRadius = buttonLocation.frame.width / 2
buttonLocation.imageView?.contentMode = .scaleAspectFill //Here........

例子:

在此处输入图像描述

于 2019-05-24T09:48:58.257 回答
0

尝试使用以下代码并删除为此按钮设置的其他属性:

let buttonLocation = UIButton(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
        buttonLocation.setImage(UIImage(named: "cat"), for: .normal)
        buttonLocation.backgroundColor = .white
        buttonLocation.layer.cornerRadius = 50
        buttonLocation.imageView?.contentMode = .scaleAspectFill
        buttonLocation.clipsToBounds = true

        self.view.addSubview(buttonLocation)

此处确保您在按钮中设置的图像大于按钮的框架。您可以在上面的代码中更改框架和角半径值。我刚刚尝试使用上面的代码并得到以下输出。

在此处输入图像描述

如果这不是您的预期输出,您可以发表评论。

希望这可以帮助。

于 2019-05-24T19:05:54.110 回答
0

回答您的问题:https ://stackoverflow.com/a/26263623/3047318

TLDR:将 contentMode 设置为viewDidLoad

于 2021-12-26T19:57:56.030 回答
-1

也许这可以帮助你:

let buttonLocation = UIButton(type: .custom)
buttonLocation.frame = CGRect(x: 0, y: 0, width: buttonRoundedSize, height: buttonRoundedSize)
buttonLocation.setImage(UIImage(named: "locate_button"), for: .normal)
buttonLocation.imageView?.contentMode = .scaleAspectFill
buttonLocation.contentHorizontalAlignment = .fill
buttonLocation.contentVerticalAlignment = .fill
buttonLocation.backgroundColor = .white
buttonLocation.layer.cornerRadius = frame.width / 2
buttonLocation.clipsToBounds = true

您需要添加contentHorizontalAlignmentcontentVerticalAlignment属性,并且不要忘记设置clipsToBounds为 true 以查看角 raius 效果。

于 2019-05-24T10:27:19.807 回答
-1

您需要使用 setBackgroundImage 属性而不是 setImage。

buttonLocation.setBackgroundImage(UIImage(named: "locate_button"), for: .normal)
于 2019-05-24T10:12:44.503 回答