2012-09-04 10 views
8

Segment może mieć tylko obraz lub tytuł; nie może mieć obu. Nie ma domyślnego obrazu.Ikona i tekst w UISegmentedController

Tak mówi Apple w numerze UISegmentedController Reference.

Czy ktoś wymyślił uogólnione rozwiązanie, które umożliwia posiadanie zarówno ikony, jak i tekstu? Mam Kontrolę segmentowaną, która ma cztery segmenty. Istnieją opcje dostosowywania wyglądu kontrolki, ale wydają się one zaprojektowane tylko dla UISegmentedControl z dwoma segmentami?

Pomysły mam kopanie wokół:

  1. rów segmentowa kontrola przez cztery UIButtons i obsłużyć „wybranych” stanie się
  2. Rzuć swe ręce po prostu iść z tekstem lub ikon.
  3. Twoje sugestie ...?
+0

Można skonstruować obraz, który ma tytuł tekst w nim za pomocą programu Photoshop lub innego oprogramowania do rysowania. – rdelmar

+0

Być może sposób UButtons jest najlepszy. Musisz obsługiwać przyciski, ale nie jest to trudne. Potrzebujesz tylko instrukcji 'for' (w tablicy, która współpracuje z twoim Uibuttonem) i używasz właściwości' isSelected' pakietu UIButton. – MaTTP

Odpowiedz

5

Możesz spróbować alternatywnej strony trzeciej, takiej jak STSegmentedControl (Bez związku, ale już go użyłem, i brzmi to tak, że zapewni Ci elastyczność, której potrzebujesz bez zaczynania od zera).

+0

Dziękuję. Okazuje się, że muszę jeszcze trochę popracować nad tym, aby działał dokładnie tak, jak chcę. ALE, jak powiedziałeś, nie muszę zaczynać od zera. – Benmj

10

utworzyć nowy obraz rysunek aktualny obraz w kontekście zwrócić żądany tekst, a następnie użyć tego kombi obraz jako pojedynczy obraz segmentu:

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

dzięki za ten fragment. Przekształciłem go w kategorię [UIImage] (https://gist.github.com/3801542), która okazała się bardzo przydatna: [https://gist.github.com/3801542](https:/ /gist.github.com/3801542). Może być używany tak jak ten ciąg 'UIImage * image = [UIImage imageFromImage: uiImage]: @" string "color: [UIColor whiteColor]];' – bejonbee

+0

@somethingkindawierd (a) Dziękujemy za udostępnienie swojej kategorii. (b) Czy nie możemy zrzucić tego prawego kwadratu "]" po uiImage? W ten sposób: [UIImage imageFromImage: uiImage string: @ "string" color: [UIColor whiteColor]]; –

+0

@BasilBourque, spróbuj tego. W tej chwili nie jestem pewien, dlaczego to zrobiłem ... –