UIButton的自定义类视图

时间:2016-08-16 09:41:05

标签: ios objective-c iphone uiview uibutton

在Identity Inspector中,我想为我的UIButton设置自定义类。 因此,我创建了一个UIView的自定义类,但我的自定义类没有出现在列表中。 反之亦然,如果我在列表中添加UIView,则大多数课程都会显示UIButton

如果UIButtonUIView的子类,而UIView不是UIButton, 为什么可能,为什么我不能使用UIView自定义类来代表我的UIButton

2 个答案:

答案 0 :(得分:2)

我不完全确定你的意思,但我会去。

你的问题......

  

如果UIButton是UIView的子类,而UIView不是UIButton,为什么我可以使用我的UIView自定义类来表示我的UIButton。

我相信你在说......

  1. UIButtonUIView
  2. 的子类
  3. 您的自定义视图是UIView
  4. 的子类
  5. 为什么不能将UIButton设置为自定义视图?
  6. 是吗?

    如果是这样,那就相当清楚了。仅仅因为它们来自同一个类并不意味着它们是相关的。 UILabel也来自UIView但非常不同。

    如果您要创建UIButton的自定义子类,那么您的自定义类应该来自UIButton ...

    你应该......

    @interface YourSubclass: UIButton
    

    而不是......

    @interface YourSubclass: UIView
    

    执行此操作将使自定义子类出现在Interface Builder中的Identity Inspector中。

答案 1 :(得分:2)

  

您可以为UIButton创建自定义子类。然后将其设置为任何按钮的自定义类。

class CCButton: UIButton {

    /*
    // Only override drawRect: if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func drawRect(rect: CGRect) {
        // Drawing code
    }
    */

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)!
        createBorder()
    }

    required override init(frame: CGRect) {
        super.init(frame: frame)
        createBorder()
    }

    private func createBorder(){
        //Define Layer
        self.layer.cornerRadius  = 8.0
        self.layer.masksToBounds = true
    }
}