您没有访问后台的ImageView,但完全正常的解决方法:
编辑:有一个更好的解决办法又是什么我张贴原本。 你可以从任何颜色营造的UIImage,并调用-setBackgroundImage:forState.
见bradley's
答案,在这里: https://stackoverflow.com/a/20303841/1147286
原来的答复:
调用-setBackgroundImage:forState:
的相反,创建一个新的UIImageView并将其添加为按钮的子视图。
UIImageView *bgImageView = [[UIImageView alloc] initWithImage:img];
bgImageView.contentMode = UIViewContentModeScaleAspectFit;
[bgImageView setFrame:CGRectMake(0, 0, videoButton.frame.size.width, videoButton.frame.size.height)];
bgImageView.tag = 99;
[yourButton addSubview:bgImageView];
[yourButton bringSubviewToFront:yourButton.imageView];
- 创建的ImageView
- 设置内容模式和框架
- 我还设置了识别标签,这样,当屏幕旋转时,我可以很容易地找到按钮的子视图我自定义的ImageView和复位其框架
- 作为一个子视图将它添加到该按钮
- 带按钮的正面的ImageView到前面所以我们自定义的ImageView的不重叠它
当按钮需要旋转刚找到其标签的ImageView和复位它的框架:
UIImageView *bgImageView = (UIImageView *)[button viewWithTag:99];
[bgImageView setFrame:CGRectMake(0, 0, newWidth, newHeight)];
你真的需要它的背景图片?你是否需要真正写文本或在其上放置另一个图像?如果没有,则使用图像而不使用背景图像,因为默认情况下仅将背景图像拉伸以匹配框架。 – 2012-01-11 18:43:41
@Raphael这些答案都不合适吗? – memmons 2013-10-01 20:00:28