ios 如何在XIB文件中设计自定义UIButton?

vohkndzv  于 2023-06-07  发布在  iOS
关注(0)|答案(3)|浏览(436)

我正在尝试为单选按钮类创建自定义UIButton。选中时,按钮的背景颜色应为橙子,文本颜色为白色;未选中时,按钮的背景颜色应为白色,文本颜色为黑色。我可以通过在按钮的文本标签下面添加一个彩色UIView来编程实现这一点,但我希望使用XIB文件来实现这一点。然而,我找不到在XIB文件中设计UIButton的在线教程。有办法做到这一点吗?谁能告诉我怎么做或者给我一个教程?
编辑:为了清楚起见,我使用故事板。我并不是在谈论整个视图控制器的xib文件。我说的是做一个XIB文件只为一个按钮。这可能吗?

olmpazwi

olmpazwi1#

这个有点旧了。不管怎样,这就是我在Xcode 10.1和Swift 4.2上成功做到的。
1.创建一个.xib文件,假设是CustomButton.xib,并在其中放入UIView contentView
1.创建一个.swift文件,并将其命名为CustomButton.swift
1.打开.swift文件并定义自定义类如下:

import UIKit

class CustomButton: UIButton {

}

1.现在打开.xib并选择contentView,然后在属性检查器中选择大小->自由形式。通过这种方式,您可以在IB中操作contentView大小
1.重要。在Identity Inspector中,不要将自定义类分配给contentView,即. xib的主视图。将其分配给文件的所有者


----->


----->

(if你选择了“Inherit Module From Target”,将“Module”选项留给Xcode)
1.现在,您应该能够在类文件中 ctrl-dragcontentView,并有一个出口引用它
1.在类中创建初始值设定项,如下所示。

@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并在任何您想要的地方使用它。

8nuwlpux

8nuwlpux2#

1.您可以在没有XIB文件的情况下配置背景颜色-您需要创建UIButton的子类并覆盖isHighlighted属性,如下所示:
导入UIKit
类OverlayButton:UI按钮{

override var isHighlighted: Bool {
     didSet {
         if isHighlighted {
             backgroundColor = .orange
             tintColor = .white
         } else {
             backgroundColor = .white
             tintColor = .black
         }
     }
 }

1.如果你想用XIB文件创建一个自定义按钮-你可以创建一个自定义视图,如上面描述的@martin,然后在整个视图上放置一个UIButton。将其设置为backgroundColor = .clear表示正常状态,其他颜色表示高亮显示状态

8yparm6h

8yparm6h3#

我说的是做一个XIB文件只为一个按钮
实际上有一种方法,我还没有测试过,但我不认为它是苹果推荐的,因为当你添加一个新的按钮子类时,创建一个新的xib的选项是禁用的
创建可重用的按钮有两种方法,这取决于你想把按钮的实现放在哪里:
1.通过IB / storyboard设置按钮的外观,然后在需要的地方复制按钮,在你的案例中甚至不需要子类http://imgur.com/ayki0Li
1.通过代码设置颜色(或其他外观)并将其连接到情节提要上的按钮。这种方法的缺点是,除非使用IBDesignable http://imgur.com/DJlGAoF,否则看不到xcode上的更改
当然,你可以把上面的两种方法结合起来。通过接口生成器设置一些属性,然后通过- (void)awakeFromNib下的代码设置一些其他属性

相关问题