Der Trick scheint zu sein, die UISegmentedControl auf die Größe der backgroundView
der Steuerung, nicht die contentView
Größe. Ich konnte es programmatisch tun, indem Sie folgendermaßen vorgehen:
// Size to cover the entire background
self.contentView.frame = self.backgroundView.frame;
self.myControl.frame = self.contentView.bounds;
Beachten Sie, dass, wenn Sie ein Zubehörteil verwenden, müssen Sie für die auch accessoryView
berücksichtigen.
Der Grund dafür ist, dass die Ansicht Hierarchie ist wie folgt:
self
(die UITableViewCell oder Unterklasse)
backgroundView
contentView
- (Ihre Kontrollen gehen hier)
accessoryView
In Portrait Layout der backgroundView
's-Rahmen ist {{9, 0}, {302, 44}}
, während die contentView
' s Rahmen etwas kleiner, bei {{10, 1}, {300, 42}}
ist. Dies gibt der Zelle ihren 1px "Rahmen", wenn der Tabellenstil gruppiert ist. Sie müssen die Größe contentView
und Ihre Kontrolle ändern, um die passende Größe zu erhalten.
. (Anmerkung: Während tatsächlich von Apple mehrere Beispiele für eine UISegmentedControl im UICatalog Beispielcode Projekt in the SDK hat, sie effektiv „betrügen“ durch einen UIViewController mit und Einstellung der Hintergrundfarbe des Hauptansicht der Tabelle Hintergrundfarbe)
Ein kleiner Stil Vorschlag: die richtige Aktivierung der Verwendung Klassennamen im Titel der Frage würden das Lesen wesentlich erleichtern. Sie können es nach der Tat ändern. Entschuldigung, ich habe keine Antwort, ich mache nur Desktop-Apps im Moment. –