我刚刚在 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..
谢谢!
将
contentMode
buttonLocation's
的 imageView
设置为 scaleAspectFill
或 scaleToFill
以覆盖 frame
的整个 button
。
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........
示例:
尝试使用下面的代码并删除为此按钮设置的其他属性:
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)
这里请确保您在按钮中设置的图像大于按钮的框架。您可以在上面的代码中更改框架和角半径值。我刚刚尝试使用上面的代码并得到以下输出。
如果这不是您预期的输出,您可以发表评论。
希望这有帮助。
尝试设置以下对齐属性,它将起作用。
closeButton.contentHorizontalAlignment = .fill
closeButton.contentVerticalAlignment = .fill
closeButton.imageView?.contentMode = .scaleAspectFit
您需要使用 setBackgroundImage 属性而不是 setImage。
buttonLocation.setBackgroundImage(UIImage(named: "locate_button"), for: .normal)