您沒有訪問後臺的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