2010-08-16 32 views
16

我正在努力旋轉UIButton的imageView屬性而不縮放它。有問題的圖像是24x18 - 比高 - 寬,但一旦旋轉到位圖像縮放,以保持這些尺寸 - 留給我一個非常擠壓的圖像。我怎樣才能防止這一點?如何在UIButton中旋轉圖像視圖,而不是縮放它

下面是我的代碼..

-(IBAction)rotateButton 
{ 
NSLog(@"Rotating button"); 

[UIView beginAnimations:@"rotate" context:nil]; 
[UIView setAnimationDuration:.5f]; 
if(CGAffineTransformEqualToTransform(button.imageView.transform, CGAffineTransformIdentity)) 
{ 
    button.imageView.transform = CGAffineTransformMakeRotation(M_PI/2); 
} else { 
    button.imageView.transform = CGAffineTransformIdentity; 
} 
[UIView commitAnimations]; 
} 

如果我申請將變換按鈕,而不是button.imageView不發生,所以我猜測它的ImageView的屬性,我我沒有設置正確的。

您的線索&噓聲是最歡迎的

M.

+0

FWIW,我得到的壓扁即使將變換應用於按鈕也會導致結果。它不會發生在模擬器上,只發生在設備上。 – rounak 2014-09-16 15:25:50

回答

1

我見過UIButtons的UIImageView的財產表現得非常奇怪 - 這似乎是他們的一些屬性是隻讀的,包括UIViewContentMode設置這就是你在這裏談論的。

我發現的最好的解決方案是模仿包含一個單獨的UIImageView的「包含圖像的按鈕」設置和坐在它上面的空的定製樣式的UIButton。爲您提供更多靈活性來管理圖像。

+1

我有一個普通的UIImageViews類似的問題,當你旋轉(不會發生什麼),通過設置contentMode到「中心」修復時會瘋狂的內容 - 謝謝你的洞察力! – Adam 2011-05-05 23:25:08

47

應用以下代碼初始化視圖中某處的視圖時加載。這將有所幫助。您在上面得到的答案是不是一個真正的答案:)

button.imageView.clipsToBounds = NO; 
button.imageView.contentMode = UIViewContentModeCenter; 
+2

這解決了我的問題! – 2013-03-19 16:17:02

+0

這工作完美! – 2013-05-07 14:08:16

+1

感謝@Nikita這對我有用! – Desmond 2013-12-06 02:19:50

1

我發現,子類UIButton刪除的變換過程中layoutSubviews工作,像這樣:

class RotatableImageButton: UIButton { 
    override func layoutSubviews() { 
     let originalTransform = imageView?.transform 
     imageView?.transform = CGAffineTransformIdentity 
     super.layoutSubviews() 
     if let originalTransform = originalTransform { 
      imageView?.transform = originalTransform 
     } 
    } 
} 
+0

適合我! – Mete 2017-05-09 15:06:24

相關問題