2012-09-04 19 views
8

段只能有圖像或標題;它不能兼得。沒有默認圖像。UISegmentedController中的圖標和文本

所以說蘋果在UISegmentedController Reference

有沒有人想出了一個通用的解決方案,讓你有一個圖標和文字?我有一個分段控件,有四個段。有自定義控件外觀的選項,但它們似乎只針對具有兩個段的UISegmentedControl而設計?

想法我踢周圍:

  1. 溝分段控制四個UIButtons和處理「選中」狀態自己
  2. 扔我的手只是文字圖標去。
  3. 您的建議...?
+0

您可以構建一個具有標題的圖像文本使用Photoshop或其他繪圖軟件。 – rdelmar

+0

也許,UIButtons的方式是最好的。你必須處理按鈕,但這並不困難。你只需要一個'for'語句(在你的UIButton的數組上)並使用UIButton的'isSelected'屬性。 – MaTTP

回答

5

您可能想嘗試使用第三方替代方案,例如STSegmentedControl(沒關係,但我已經使用了它,聽起來像它會給你靈活性,而無需從頭開始)。

+0

謝謝。事實證明,我需要在這方面做更多的工作,以使其功能完全符合我的需求。但是,就像你說的,我不必從頭開始。 – Benmj

10

您可以通過繪製你的當前圖像爲背景創建一個新的形象,畫出你想要的文字,然後使用該組合圖像作爲單段圖片:

UIGraphicsBeginImageContextWithOptions(size, YES, 0); 
CGContextRef context = UIGraphicsGetCurrentContext(); 

// Text first 
[myString drawAtPoint:somePoint withFont:font]; 

// Images upside down so flip them 
CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, size.height); 
CGContextConcatCTM(context, flipVertical); 
CGContextDrawImage(context, (CGRect){ imagePoint, imageSize }, [myUIimage CGImage]); 

UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

return image; 
+4

感謝此片段。我已經把它變成了[UIImage類別](https://gist.github.com/3801542),我發現它非常有用:[https://gist.github.com/3801542](https: /gist.github.com/3801542)。它可以像這樣使用:'UIImage * image = [UIImage imageFromImage:uiImage] string:@「string」color:[UIColor whiteColor]];' – bejonbee

+0

@somethingkindawierd(a)感謝您分享您的類別。 (b)我們不能在uiImage之後放棄右括號']'嗎?像這樣:[UIImage imageFromImage:uiImage string:@「string」color:[UIColor whiteColor]]; –

+0

@BasilBourque,試試吧。在這個時候,我不知道爲什麼我這樣做... –