Il trucco sembra essere quello di dimensionare il UISegmentedControl alle dimensioni del backgroundView
del controllo, non lo contentView
. Sono stato in grado di farlo a livello di codice nel seguente modo:
// Size to cover the entire background
self.contentView.frame = self.backgroundView.frame;
self.myControl.frame = self.contentView.bounds;
Si noti che se si utilizza un accessorio, è necessario tenere conto della accessoryView
pure.
La ragione è che la gerarchia della vista è la seguente:
self
(la UITableViewCell o sottoclasse)
backgroundView
contentView
accessoryView
In layout verticale, il backgroundView
's telaio è {{9, 0}, {302, 44}}
, mentre la contentView
' s telaio è leggermente più piccolo, a {{10, 1}, {300, 42}}
. Questo dà alla cella il suo "bordo" 1px quando lo stile della tabella è raggruppato. Devi ridimensionare sia il contentView
e il il tuo controllo per ottenere la dimensione appropriata.
(NOTA:. Anche se Apple ha effettivamente diversi esempi di un UISegmentedControl nel progetto di codice di UICatalog di esempio in the SDK, hanno effettivamente "barare" utilizzando un UIViewController e impostando il colore di sfondo della vista principale al colore di sfondo della tabella)
fonte
2009-12-24 23:56:23
Uno stile suggerimento minore: utilizzando la corretta capitalizzazione del i nomi delle classi nel titolo della domanda renderebbero molto più facile la lettura. Puoi cambiarlo dopo il fatto. Scusa se non ho una risposta, al momento eseguo solo app desktop. –