gpt4 book ai didi

ios - UIButton .setImage() 在 Swift 3 中不起作用

转载 作者:搜寻专家 更新时间:2023-10-31 22:26:49 25 4
gpt4 key购买 nike

我正在尝试将多个按钮添加到 UIView 子类。在 UIView 子类(称为 leftPanel)的 init() 方法中,我添加了对不同函数的多次调用以添加每个按钮。这是我的 init() 的样子:

override init(frame: CGRect){
super.init(frame: frame)
components = self.setupView()
print("Checkpoint: [leftPanel] init() call finished") // basic debug checkpoint
}

init() 调用名为 setupView() 的函数,该函数包含对创建按钮的每个函数的调用。这是我的 setupView() 代码:

func setupView() -> [UIView] {
let addButton = self.setupAddButton()
let infoButton = self.setupInfoButton()
let orderPromoteButton = self.setupOrderPromoteButton()
let orderDemoteButton = self.setupOrderDemoteButton()
let refreshItemsButton = self.setupRefreshItemsButton()

let components = [lessonActionsLabel, addButton, infoButton, orderPromoteButton, orderDemoteButton, refreshItemsButton]
return components
}

setupView 函数中的每个调用都是针对一个较小的函数,该函数包含将每个按钮添加到 leftPanel 子类的代码。我已经这样做了,所以我可以根据需要删除每个成员,并且可以使用每个单独的设置函数根据需要将每个单独的项目重新添加到我的 View 中。大多数功能几乎相同,并使用此代码:

func setupRefreshItemsButton() -> UIButton {
let refreshItemsButton = UIButton(type: UIButtonType.infoLight)
refreshItemsButton.frame = CGRect(x:0, y:screenHeight*55/100, width: screenWidth*30/100, height: screenHeight*5/100)
refreshItemsButton.setTitle(" Refresh lesson items", for: UIControlState.normal)
refreshItemsButton.setImage(UIImage(contentsOfFile: "up.png"), for: UIControlState.normal)
self.addSubview(refreshItemsButton)
return refreshItemsButton
}

设置每个按钮。但是,当我在 iOS 模拟器上运行它时,应该为每个按钮设置图像的行似乎不起作用。当我初始化每个按钮时,我用 UIButtonType.infoLight 类型初始化它们,因为我想使用与普通 infoLight 按钮相同的样式(例如文本颜色) .我想更改的 infoLight 类型的唯一属性是它旁边的图像(默认情况下是 (i))。我想把图标做成UIImage(contentsOfFile: "up.png"),但是好像不行。 任何人都可以建议我可以做些什么来实现这个目标吗?

我目前尝试对现有的进行一些更改,例如将类型更改为 .custom,看看这是否会更改图像,但这也不起作用。它只会重置我想使用的 .infoLight 的格式,所以我已将其切换回来。但是,如果您的解决方案需要我将其改回 .custom,那么我可以做到。

我也尝试过更改我的代码以仅将 up.png 替换为 up 但它仍然不起作用。

我的代码都没有引发任何警告或错误。

编辑:大多数答案建议我将 UIImage(contentsOfFile: "") 更改为 UIImage(named: ""),我已经完成了,但它占据了 UIButton 的整个框架,我想更改它,并通过保持一个 .infoLight 来保持相同右侧带有标签的小图像。任何人都可以为此提出解决方法吗?

这个问题有什么独特的?:虽然 .setImage() 已经通过使用 UIImage(named:) 解决了UIImage(contentsOfFile:),我还想在按钮对象中保留 .setTitle() 标签。 UIImage(named:) 调用使图像填充按钮的整个 框架,但我想保持它与 .infoLight< 相同,右边是带标题的小图。

最佳答案

使用背景图片,像这样:

refreshItemsButton.setBackgroundImage(
UIImage(named:"up.png"),
for:UIControlState.normal)

关于ios - UIButton .setImage() 在 Swift 3 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45518982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com