gpt4 book ai didi

ios - 自定义按钮在 Interface Builder 中未正确显示

转载 作者:行者123 更新时间:2023-11-30 11:51:36 24 4
gpt4 key购买 nike

我正在学习在 XCode 中开发 iOS 应用程序。我创建了简单的自定义按钮(UIButton 的子类),它应该具有红色背景和绿色文本。在 iOS 模拟器中运行应用程序时,一切正常。但在界面生成器中使用其他颜色(在界面生成器中指定)。测试项目可在https://www.dropbox.com/s/ro7i4omdbpwapi0/testapp%20%282%29.zip?dl=0获取。有人可以帮忙吗?

这是自定义 UIbutton 类的源代码:

import UIKit

@IBDesignable class DefaultButton: UIButton {
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}

required init?(coder: NSCoder) {
super.init(coder: coder)
setup()
}

func setup() {
setTitleColor(UIColor.red, for: .normal)
backgroundColor = UIColor.green
//setBackgroundImage(UIImage.createGradient(colors: [ UIColor.defaultGradientStartColor, UIColor.defaultGradientEndColor ], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 1, y: 0), size: CGSize(width: 200, height: 200)), for: .normal)
//layer.cornerRadius = 50
}

override func awakeFromNib() {
super.awakeFromNib()
setup()
}
}

最佳答案

您回答中描述的行为是正确的;但我认为你混合了两种不同的东西。

基本上,如果您想为按钮标题和按钮背景着色,则必须使用界面生成器中可用的字段。您有一些很好的属性可以轻松设置这些东西。

Use interface builder's parameters to design your look

因此,在这种情况下,在 View 设置中定义 titleColorbackgroundColor 是不相关的,因为它是硬编码的。

如果您想在 Storyboard中显示按钮的自定义外观(例如圆角),则可以使用 @IBInspectable 关键字在界面生成器中添加新属性。

@IBDesignable
class DefaultButton: UIButton {

@IBInspectable var borderWidth: CGFloat = 0 {
didSet {
layer.borderWidth = borderWidth
}
}
@IBInspectable var borderColor: UIColor? {
didSet {
layer.borderColor = borderColor?.cgColor
}
}
@IBInspectable var cornerRadius: CGFloat = 0 {
didSet {
layer.cornerRadius = cornerRadius
layer.masksToBounds = cornerRadius > 0
}
}

// ...
}

通过执行此操作,您可以在 Storyboard中编辑并查看具有良好渲染效果的 View !

Custom properties directly in storyboard

关于ios - 自定义按钮在 Interface Builder 中未正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48280809/

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