Come posso impostare le dimensioni/posizione di un UIView personalizzato per il suo posizionamento all'interno di un UableViewCell personalizzato?

StackOverflow https://stackoverflow.com/questions/5411142

Domanda

Come posso impostare le dimensioni di una sottoview che viene posizionata a livello di programmazione all'interno di un uitableViewcell?

Ho una UibleViewCell personalizzata (sottoclassata) in cui una parte della cella include un numero di righe (dinamiche) che sono implementate come UIView personalizzato. L'idea è quella di creare la vista personalizzata (che è una riga di elementi) e quindi quando UtableViewCell colpisce LayOutSubViews, si imposterà (a) si imposterà posizionando e (b) attraversare e chiamare "layoutsubviews" su ciascuna delle righe Le Uiviews personalizzate che utilizza per le righe.

Domanda - Non sono sicuro di come impostare correttamente le dimensioni/posizione della riga Uiview personalizzata? Come faccio a determinare il metodo personalizzato UIView LayoutsubViews, la sua larghezza x, y, altezza in modo da poterlo posizionare?

In realtà ho bisogno di dover manualmente, all'interno del metodo LayoutsubViews di UitableCellview, analizzate attraverso tutte le righe e chiamarne un metodo personalizzato per passare loro la loro posizione/larghezza/altezza in cui dovranno essere? Quindi, quando il metodo Layoutsubview di Uiview Row personalizzato viene colpito, saprebbe cercare la sua variabile di istanza che memorizzava questi valori per usarli?

Spero che questo abbia senso.

La struttura è:

Dynamic Custom UitableCellView (sottoclasse)

  • Determina la rowheight dinamicamente in altezza frowatindexpath
  • In LayoutsubViews include loop tramite sotto -viste (di Uiview personalizzato che ho) e chiama LayoutsubView su ciascuno di questi

In Uiview personalizzato (che rappresenta una riga di articoli, ad es. Uilabel)

  • In layoutsubview - Domanda: come impostare le dimensioni del frame di questa sottobsima?
  • Presumo che la x, y per il telaio dovrebbe essere 0,0?
  • Per la larghezza/altezza come si ottiene la dimensione intera dell'area di supervisione a cui dovrebbe essere impostato?
  • La superiew avrebbe dovuto trasmettere queste informazioni prima dei layoutsubviews?
È stato utile?

Soluzione

Qualsiasi visualizzazione aggiunta come parte della sottoclasse TableViewCell è posizionata rispetto al frame delle celle, cioè x: 0, y: 0 per l'origine della sottovisione, sarebbe l'angolo in alto a sinistra del tablecell. Qualcosa del genere dovrebbe essere sufficiente per iniziare.

CGRect frame =[self frame];
frame.size.height=20.0f;
frame.origin.x=(self.frame.size.height/2)-frame.size.height;
frame.origin.y=0.0f;
[subview setFrame:frame];

Altri suggerimenti

È possibile aggiungere una categoria a UIView con metodi di ridimensionamento.

Uiview+resizemethods.h

- (void) setHeight: (CGFloat) height;
- (void) setWidth: (CGFloat) width;
- (void) setTop: (CGFloat) top;
- (void) setLeft: (CGFloat) left;

Uiview+resizemethods.m

- (void) setHeight: (CGFloat) height {
    CGRect frame = self.frame;
    frame.size.height = height;
    self.frame = frame;
}
- (void) setWidth: (CGFloat) width {
    CGRect frame = self.frame;
    frame.size.width = width;
    self.frame = frame;
}
- (void) setTop: (CGFloat) top {
    CGRect frame = self.frame;
    frame.origin.y = top;
    self.frame = frame;
}
- (void) setLeft: (CGFloat) left {
    CGRect frame = self.frame;
    frame.origin.x = left;
    self.frame = frame;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top