2014-12-02 48 views
9

我有一個UIButton從網絡下載的形象,我想要的內容模式爲「縱橫補」工作,所以我這樣做:上的UIButton的ImageView的設置ContentMode到AspectFill不與較小的圖像

btn.imageView.contentMode = UIViewContentModeScaleAspectFill; 

然後我需要調用:

[btn setImage:image forState:UIControlStateNormal]; 

這適用於那些圖像比按鈕大。它們被縮放以適應寬高比不變的按鈕。但對於那些比按鈕小的圖像,它們只是簡單地顯示在中心而不被拉伸。

爲了解決這個問題,我嘗試了用我檢索的圖像製作一個可調整大小的圖像,然後在我的按鈕上調用setImage:forState:,但這不起作用。

因此,我最終不得不手動繪製一個比我的按鈕小,然後使用繪製的圖像爲我的按鈕,但我不喜歡這種解決方案的每個圖像調整大小的圖像。

所以我的問題是如何在我的按鈕上正確縮放縮放的圖像,而不必每次都手動繪製調整大小的圖像?

+0

我編輯了答案,請檢查它... – 2014-12-03 05:48:51

回答

24

我有這個相同的問題。試試這個:

[btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentFill]; 
    [btn setContentVerticalAlignment:UIControlContentVerticalAlignmentFill]; 

從我的理解,設置圖像時,該按鈕的UIImageView的大小/幀設置爲圖像的,所以當它是小的,它不是由UIButton的的框架限制,而因此坐在按鈕的中間,愉快地,不變地坐着。

要解決這個問題,我們需要強制UIImageView佔用UIButton的全部大小,並設置它的對齊來處理這個問題。

詳情參見(雖然它是指此爲自動版式問題):從UIButton的
1.繼承
2.重寫layoutSubviews方法,像這樣: https://stackoverflow.com/a/28205566/3692828

+2

完美,正確的答案! – axl411 2015-04-14 02:13:42

+0

謝謝。有用。 – Kit 2016-07-11 12:41:01

+0

沒有爲我工作。 在Ipad IOS 10我試圖在UIbutton上設置圖像。按鈕尺寸150x150和圖像比那更大。當我嘗試在其上設置圖像時,它需要該圖像的左上角 – 2017-02-09 09:55:09

0

試試這個

- (void)layoutSubviews { 
    [super layoutSubviews]; 
    self.imageView.frame = self.bounds; 
} 
相關問題