簡體   English   中英

以編程方式更改UIButton大小-iOS

[英]Programmatically change UIButton size - iOS

我有一個使用Google Plus iOS SDK的簡單iOS應用程序。 我要自定義登錄按鈕。 我設法使它看起來像我想要的,但是我無法使按鈕成為我想要的尺寸。 (我沒有使用自動布局)。 這是我的viewDidLoad中的代碼:

[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屏幕截圖

如您所見,按鈕太寬。 因此,我嘗試以編程方式更改其大小,但這也不起作用:

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

有沒有什么辦法解決這一問題?

如果必須在UIButton上設置image屬性,Apple建議使用正確大小的圖像,如果使用圖像資產,則建議使用兩倍大小的圖像。

如果這不是您的好選擇,我想您可以通過使用setBackgroundImage:forState而不是setImage:forState來使setFrame:方法按您期望的那樣工作:

[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);

最終使用Autolayout可以解決問題(因為我相信它所施加的限制會阻止Google Plus SDK增大按鈕的大小)。 唯一的問題是,我現在必須修復其他問題,例如對3.5英寸顯示器的支持等等,因為Autolayout確實很可怕。...:(

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM