我正在尝试为单选按钮类创建自定义UIButton。选中时,按钮的背景颜色应为橙色,文本颜色为白色,而未选中时,按钮的背景颜色应为白色,文本颜色为黑色。我可以通过在按钮的文本标签下方添加彩色的UIView来以编程方式执行此操作,但是我希望使用XIB文件来执行此操作。但是,我一生都找不到在XIB文件中设计UIButton的在线教程。有没有办法做到这一点?谁能告诉我如何或将我指向教程?
编辑:为清楚起见,我使用情节提要。我不是在谈论整个视图控制器的xib文件。我说的是只为一个按钮制作一个XIB文件。这可能吗?
这有点旧了..无论如何,这就是我在 Xcode 10.1 和 Swift 4.2 上设法做到这一点的方法。
CustomButton.xib放入一个 UIViewcontentViewCustomButton.swiftRun Code Online (Sandbox Code Playgroud)import UIKit class CustomButton: UIButton { }
现在打开 .xib 并选择contentView,然后在属性检查器中选择 Size -> Freeform。这样你就可以操纵contentViewIB中的大小
重要的。在 Identity Inspector 中,不要将自定义类分配给contentView,即 .xib 的主视图。将其分配给文件的所有者
(如果您选择了“从目标继承模块”,请将“模块”选择留给 Xcode)
现在您应该能够在其类文件中按住Ctrl 键拖动并contentView有一个引用它的出口
Run Code Online (Sandbox Code Playgroud)@IBOutlet weak var contentView: UIView! // init used if the view is created programmatically override init(frame: CGRect) { super.init(frame: frame) self.customInit() } // init used if the view is created through IB required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) self.customInit() } // Do custom initialization here private func customInit() { Bundle.main.loadNibNamed("CustomButton", owner: self, options: nil) self.addSubview(self.contentView) self.contentView.frame = self.bounds self.contentView.autoresizingMask = [.flexibleHeight, .flexibleWidth] }
现在您应该能够使用 .xib 设计您的 CustomButton 并在任何您想要的地方使用它。
小智 -3
我正在谈论仅为一键制作 XIB 文件
实际上有一种方法我还没有测试过,但我认为苹果不推荐它,因为当您添加新的按钮子类时,创建新的 xib 的选项被禁用
有两种创建可重用按钮的替代方法,具体取决于您想要放置按钮实现的位置:
通过 IB / Storyboard 设置按钮外观,然后将按钮复制到您需要的位置,您甚至不需要子类https://i.stack.imgur.com/e8gDC.jpg
通过代码设置颜色(或其他外观)并将其连接到故事板上的按钮。这种方法的缺点是你看不到 xcode 上的更改,除非你使用 IBDesignable https://i.stack.imgur.com/c064a.jpg
您绝对可以结合使用上述两种方法。通过界面生成器设置一些属性,然后通过下面的代码设置一些其他属性- (void)awakeFromNib
| 归档时间: |
|
| 查看次数: |
2504 次 |
| 最近记录: |