¿Cómo configura el tamaño/posición de una UIView personalizada para su colocación dentro de un UITableViewcell personalizado?

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

Pregunta

¿Cómo configura el tamaño de una subvisión que se coloca mediante programación dentro de UITableViewCell?

Tengo un UITableViewcell personalizado (subclasificado) en el que parte de la celda incluye una serie de filas (dinámicas) que se implementan como un UIView personalizado. La idea es crear la vista personalizada (que es una fila de elementos) y luego, cuando el uableViewCell llega a la disposición de diseño, se establecerá (a) en el posicionamiento y (b) atravesará y llame a "LayoutSubViews" en cada una de las filas de las filas de las filas de Las UIViews personalizadas que está utilizando para las filas.

Pregunta - ¿No estoy seguro de cómo establecer correctamente el tamaño/posición de la fila UIView personalizada? ¿Cómo, dentro del método UIView de UIView personalizado, determino su X, Y, ancho, altura para que pueda colocarlo?

¿Por ejemplo, por ejemplo, necesito manualmente, dentro del método LayoutSubViews de UIitableCellView, recorrer todas las filas y llamar a un método personalizado para que les pasen su posición/ancho/altura en las que deberán estar? Luego, cuando el método de LayoutSubView de la fila de UIView personalizada se presione, ¿sabría buscar su variable de instancia que almacenó estos valores para usarlos?

Ojalá esto tenga sentido.

La estructura es:

Dynamic Custom UITableCellView (subcaseado)

  • Determina RowHeight dinámicamente en altura ForrowatIndExpath
  • En LayOutSubViews, incluye el bucle a través de subvisiones (de UIView personalizada que tengo) y llama LightOutSubView en cada uno de estos

En UIView personalizado (que representa una fila de elementos, por ejemplo, Uilabel)

  • En LayoutSubView - Pregunta: ¿Cómo establecer el tamaño del marco de esta subvisión?
  • Supongo que la x, y para el marco debe ser 0,0?
  • Para el ancho/altura, ¿cómo se obtiene el tamaño completo del área de supervisión en la que debe establecerse?
  • ¿Debería la supervisión haber transferido esta información antes de las Vistas de LayoutSubViews?
¿Fue útil?

Solución

Cualquier visión agregada como parte de la subclase de TableViewCell se coloca en relación con el marco de las celdas, es decir, x: 0, y: 0 para el origen subview, sería la esquina superior izquierda de la tabla. Algo como esto debería ser suficiente para comenzar.

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];

Otros consejos

Puede agregar una categoría a UIView con métodos de cambio de tamaño.

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;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top