2010-01-05 8 views
10

Ho un UITableViewCell che vorrei aggiungere una vista a destra (oltre alla vista accessoria). Ho provato a impostare le dimensioni di textLabel in modo che restino alcuni pixel più ristretti, ma lo ridimensioni appena.ridimensionare UITableViewCell textLabel

C'è un modo per ridimensionare textLabel?

risposta

8

L'oggetto a cui fa riferimento la proprietà textLabel predefinita, nelle istanze UITableViewCell di tipo UITableViewCellStyleDefault, non può essere ridimensionato, almeno non nella mia esperienza. L'idea migliore in questi casi è creare la propria sottoclasse di UITableViewCell, in codice o anche con Interface Builder se lo si desidera, e dargli il layout che si desidera.

16

In realtà può essere ridimensionato se si crea una sottoclasse UITableViewCell e l'override del metodo layoutSubviews:

- (void)layoutSubviews { 
[super layoutSubviews]; //The default implementation of the layoutSubviews 

CGRect textLabelFrame = self.textLabel.frame; 
textLabelFrame.size.width = _textLabelMaxWidth; 
self.textLabel.frame = textLabelFrame; 
} 

Speranza che aiuta.

+0

Questo funziona solo per me quando la cella viene ricaricata, qualche idea? –

+0

@AdamCarter Sì, è così che si suppone che funzioni, a meno che non si desideri modificarlo in un momento diverso e da un altro evento. –

+1

Questo è stato molto utile per me. Avevo una sottoclasse di UITableViewCell e le dimensioni dell'etichetta continuavano a tornare alle impostazioni predefinite dello storyboard. Apprezzo il consiglio con questo! – mikeho

1

Ho notato che il textLabel si ridimensiona per accogliere l'accessorioView. Quindi, se si desidera che l'etichetta utilizzi l'intera cella, è possibile impostare accessoryView su zero (penso che questo sia comunque il comportamento predefinito). Oppure, per esempio, se vuoi che l'etichetta prenda solo la metà della cella a sinistra, rendi accessorView un UIView vuoto che si estende nella metà destra della cella. (Non deve essere vuoto, puoi mettere cose lì dentro ... il mio punto è che ridurrà il textLabel.)

0

Puoi ridimensionare UITableView Cell in questo modo più semplice. Per prima cosa, dai un'occhiata a il mio progetto di esempio.

ResizableUIView

Essa vi mostrerà come è possibile ridimensionare base di cellule UITableView sulla sua componente interna in modo più semplice con la creazione di vincoli.

tblTest.estimatedRowHeight = 100 // This is where you can set your estimated row height 
    tblTest.rowHeight = UITableViewAutomaticDimension 

Un altro fatto importante è le linee di etichetta: enter image description here

dovrebbe essere

Per farvi capire, ho impostato UILabel all'interno UIView, dare un'occhiata a come mi creato vincoli sulla sua UIView genitore.

Se hai ancora bisogno di aiuto, basta chiedere.

Good Luck

Problemi correlati