回答
可以使用sizeWithAttributes
得到NSString
的CGSize
(我們使用之前sizeWithFont
但現在已經過時,法iOS 7
),然後根據大小有如
NSString *string = @"First Button";
CGSize size = [string sizeWithAttributes:
@{NSFontAttributeName:
[UIFont systemFontOfSize:27.0f]}];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0, 50, size.width, size.height);
button.titleLabel.textColor = [UIColor blackColor];
[button setTitle:string forState:UIControlStateNormal];
button.backgroundColor = [UIColor redColor];
[self.view addSubview:button];
審查這方面的工作對我罰款創造UIButton
。 希望這會幫助你。
你遺漏了在問題中被問到的重要部分 - 如何確定字符串大小。 – rmaddy
是的,你可以使用sizeWithAttributes審查更新的答案 – Buntylm
我的朋友這個方法爲ios6工作? – user3599133
首先,你必須使用
NSString someText = @"some Text";
CGSize constraintSize = CGSizeMake(youMaxWidthForButton, youMaxHeightForButton);
CGRect labelSize = [someText boundingRectWithSize:constraintSize options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:17.0f]} context:nil];
比你創建你UIButton
UIButton *button = [[UIButton alloc]initWithFrame:labelSize];
最後你設置按鈕標題的
button.titleLabel.text = someText;
我的朋友約束是什麼? – user3599133
這是寬度和高度的最大值。例如,你不想讓你的按鈕比縱向模式下的iPhone寬度更大,那麼你可以使用'320'作爲最大寬度 – Argent
- 1. 從字符串創建安全標題
- 2. 如何從修改的字符串列表創建gtk.STOCK_ *按鈕?
- 3. iOS比較按鈕標題字符串
- 4. 從標記字符串創建節點
- 5. 如何從字符串創建httpcookie?
- 6. 如何從字符串中創建XElement?
- 7. 如何從此字符串創建JSONArray?
- 8. 如何從字符串創建數組?
- 9. 如何從字符串創建枚舉
- 10. 如何從字符串創建HtmlTag
- 11. 如何從.txt文件中的現有字符串創建多個按鈕
- 12. 如何創建字符串
- 13. 如何創建字符串
- 14. 如何從字符串變量創建const字符串
- 15. 如何從突變字符串創建子字符串
- 16. 如何從字符串標記(模板)創建svg形狀
- 17. 從字符串創建表
- 18. 創建從字符串
- 19. 從字符串創建FILE *
- 20. 從字符串創建URL
- 21. 從字符串創建XML
- 22. 創建從字符串
- 23. 從字符串創建NSPredicate
- 24. 從字符串創建類
- 25. 從HTMLDivElement創建字符串
- 26. 如何從字符串中刪除特殊字符並創建新字符串?
- 27. 如何在.NET中創建殼式標題欄按鈕
- 28. 如何在javascript中創建帶圖像和標題的按鈕
- 29. 如何從Java中的字符串創建對象(如何評估字符串)?
- 30. 如何從字符串中創建關鍵字符號?
可能重複來獲取文本的大小[如何獲得NSString的大小](http://stackoverflow.com/questions/2669063/how-to-get-the-size-of-a-nsstring) –
@Lucas這不是最好的重複,因爲答案使用了現在已棄用的方法。 – rmaddy
@rmaddy這很好,我們來參考一下。 http://stackoverflow.com/a/18897897/426959 –