Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 子类UIButton的背景色?_Iphone_Xcode_Uibutton - Fatal编程技术网

Iphone 子类UIButton的背景色?

Iphone 子类UIButton的背景色?,iphone,xcode,uibutton,Iphone,Xcode,Uibutton,我有一个UIButton子类,初始化为: MyButton *button = [MyButton buttonWithType:UIButtonTypeCustom]; 我想设置这个按钮的背景色 如果在创建按钮后在视图控制器中执行以下操作: MyButton.backgroundColor = [UIColor ...]; 它很好用。但是如果我尝试在UIButton子类中执行以下操作,无论是在initWithFrame还是在DrawRect: self.backgroundColor =

我有一个UIButton子类,初始化为:

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可能是一个有点抽象的类,并且没有办法找到它。子类化目前显然可以正常工作(作为一个“自定义”按钮),但它可能会突然中断。