2014-07-01 74 views
0

我有一個使用Google Plus iOS SDK的簡單iOS應用程序。我想自定義登錄按鈕。我設法讓它看起來如何我想要的,但我不能讓按鈕成爲我想要的大小。 (我沒有使用自動佈局)。這是我在我的viewDidLoad代碼:以編程方式更改UIButton大小 - iOS

[addservice_4 setImage:[UIImage imageNamed:@"uiTagFriendsAdd.png"] forState:UIControlStateNormal]; 
[addservice_4 setImage:[UIImage imageNamed:@"uiTagFriendsAdd.png"] forState:UIControlStateHighlighted]; 
[addservice_4 setImage:[UIImage imageNamed:@"uiTagFriendsAdd.png"] forState:UIControlStateSelected]; 
addservice_4.layer.cornerRadius = 5; 
addservice_4.layer.borderWidth = 1.0f; 
addservice_4.layer.borderColor = [[UIColor blueColor] CGColor]; 

做上述變化編程給我留下了這個最終結果是:

UIButton screenshot

正如你可以看到按鈕太寬。所以我試圖以編程方式改變它的大小,但這也不起作用:

addservice_4.frame = CGRectMake(20, 22, 101, 30); 

有什麼辦法解決這個問題嗎?

+0

任何人都知道嗎? – Supertecnoboff

+0

我在這裏猜測,因爲我沒有使用SDK,但你可以嘗試改變ViewController的viewDidLayoutSubviews方法中包含按鈕的按鈕的大小。 –

+0

如果該按鈕使用自動佈局,那麼改變frame不重要。它使用自動佈局嗎? –

回答

0

如果必須將圖像屬性設置爲UIButton Apple建議在使用圖像資源時使用大小合適或大小加倍的圖像。

如果這不是你一個不錯的選擇,我想你可以得到SETFRAME:方法工作,因爲你會在你的問題預計通過了setBackgroundImage:forState代替setImage:forState這樣的:

[addservice_4 setBackgroundImage:[UIImage imageNamed:@"uiTagFriendsAdd.png"] forState:UIControlStateNormal]; 
[addservice_4 setBackgroundImage:[UIImage imageNamed:@"uiTagFriendsAdd.png"] forState:UIControlStateHighlighted]; 
[addservice_4 setBackgroundImage:[UIImage imageNamed:@"uiTagFriendsAdd.png"] forState:UIControlStateSelected]; 
addservice_4.layer.cornerRadius = 5; 
addservice_4.layer.borderWidth = 1.0f; 
addservice_4.layer.borderColor = [[UIColor blueColor] CGColor]; 
addservice_4.frame = CGRectMake(20, 22, 101, 30); 
0

最後使用Autolayout解決了這個問題(因爲我相信它制定的限制會阻止Google Plus SDK將按鈕放大)。唯一的問題是,我現在不得不修復其他問題,如支持3.5英寸顯示器等等,因爲Autolayout真的很可怕.... :(

相關問題