Iphone 子类UIButton的背景色?
我有一个UIButton子类,初始化为:Iphone 子类UIButton的背景色?,iphone,xcode,uibutton,Iphone,Xcode,Uibutton,我有一个UIButton子类,初始化为: MyButton *button = [MyButton buttonWithType:UIButtonTypeCustom]; 我想设置这个按钮的背景色 如果在创建按钮后在视图控制器中执行以下操作: MyButton.backgroundColor = [UIColor ...]; 它很好用。但是如果我尝试在UIButton子类中执行以下操作,无论是在initWithFrame还是在DrawRect: self.backgroundColor =
MyButton *button = [MyButton buttonWithType:UIButtonTypeCustom];
我想设置这个按钮的背景色
如果在创建按钮后在视图控制器中执行以下操作:
MyButton.backgroundColor = [UIColor ...];
它很好用。但是如果我尝试在UIButton
子类中执行以下操作,无论是在initWithFrame
还是在DrawRect:
self.backgroundColor = [UIColor ...];
它什么也不做。按钮保持透明
问题是,我的逻辑是这样的,我真的需要在UIButton子类中设置颜色,而不是在调用代码中
有什么想法吗?你能在你的子类中实现“Buttonwithtype”方法并在那里写代码吗self.backgroundColor=[UIColor WhateverColor]
它应该会起作用。让我知道。
UIButton
不是子类。它是一个类集群,您几乎肯定会弄错(它现在或将来可能会崩溃)。基本方法按钮的类型为:
也永远不会返回类的实例,因此您需要竭尽全力使所有代码正常工作
更好的方法是制作一个工厂方法,使用
ui按钮。按钮类型:
,并按照您需要的方式配置按钮。drawRect中的可能重复,您是否调用了[super drawRect]?如果没有,试着打电话,然后做其他事情。是的,我总是这样做[超级drawRect]。正如我所说,没有背景色。是的,它起作用了,谢谢。(我无法实现buttonWithType,因为我需要颜色-使用属性太晚了-因此我实现了buttonWithType:和BackgroundColor:并调用[super buttonWithType]。我仍然想知道这个简单的解决方案有什么问题。太好了。可能是因为您编写的哪个方法没有调用?如果这有帮助,那么您可以将其标记为答案吗?我是stackoverflow新手,所以我得到了一些积分:)ThanksHow我们知道吗?有没有apple ressource解释哪些UI元素可以子类化,哪些不可以子类化?因为在UIButton上没有真正文档化的init方法。不过,我们确实需要调用init。最重要的属性是buttonType,它是只读的,即它必须在创建期间设置。按钮的行为在很大程度上取决于它。设置它的唯一方法是使用工厂方法“+buttonWithType:”实例化一个新按钮。您不能保证得到一个工作按钮——UIButton可能是一个有点抽象的类,并且没有办法找到它。子类化目前显然可以正常工作(作为一个“自定义”按钮),但它可能会突然中断。