UIButton 背景 VS UIButton imageview.view
Posted
技术标签:
【中文标题】UIButton 背景 VS UIButton imageview.view【英文标题】:UIButton background VS UIButton imageview.view 【发布时间】:2012-02-02 12:28:30 【问题描述】:UIButton 背景和 UIButton imageview.view 有什么区别
我试过myButton.imageView.image=[UIImage imageNamed:@"image.png"];
然后什么也没发生,但是当我使用[myButton setBackgroundImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
按钮的背景发生变化。
谢谢!
【问题讨论】:
【参考方案1】:myButton.imageView.image 是只读属性,因此不能像这样更改。而 setBackgroundImage 是一个正确设置背景的方法。
//编辑
UIButton 的 setImage 方法需要两个参数,
setImage:(UIImage *) forState:(UIControlState)
因此使用上述方法可以正常工作,而其他方法则不行。
【讨论】:
@Tough Guy 如果它是只读属性,那么它会报错。【参考方案2】:UIButton
的imageView
不表示背景图像。标题旁边显示的是图像视图。
因此,如有必要,将始终创建 imageView
。如果在创建之前设置了yourButton.imageView.image
,则没有任何内容可以显示,因为imageView
为nil。
所以 UIButton 有状态 (UIControlState
) 来控制、创建或删除背景图像视图和 imageView
在状态之间变化时。 (也是标题)
请查看UIButton
的文档:http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIButton_Class/UIButton/UIButton.html
您将看到两种不同的图像处理方法
– setBackgroundImage:forState:
– setImage:forState:
【讨论】:
【参考方案3】:[myButton setBackgroundImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
[myButton setBackgroundImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateHighlighted];
当你调用当前的ImageView时,它会返回选中状态的背景图片
不同的统计数据被突出显示/选择/禁用
【讨论】:
其实你说的我试过了,看起来合乎逻辑,但是它并没有给我“选中状态背景图”,你试过了吗?【参考方案4】:@Tough Guy 是正确的 - UIButton 的 imageView 具有只读属性。所以不能直接通过访问imageView的图片来设置图片。
@property(nonatomic,readonly,retain) UIImageView *imageView __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
使用方便的方法
[UIButtonInstance setImage:imageName forState:buttonState];
【讨论】:
imageView 是只读的。这意味着您不能更改按钮的 imageView。但是imageView的image属性不是只读的,所以可以设置imageView的图片没有任何问题。 @MatthiasBauch 由于 ImageView 是只读属性,因此您不能为 UIButton 分配或分配 imageView。 [UIButtonInstance setImage:imageName forState:buttonState]期间只有UIButton分配UIImageView;所以你永远不能将图像分配给 UIButtonInstance.imageView @Dhilip,这实际上不是真的。 ImageView 是只读的,但就像 Matthias Bauch 所说,它的图像属性是 not,因此可以通过使用 UIButtonInstance.imageView.image 甚至 [UIButtonInstance.imageView setImage:image]; 来更改。以上是关于UIButton 背景 VS UIButton imageview.view的主要内容,如果未能解决你的问题,请参考以下文章