mini - ultimo ios
Obtenga las dimensiones reales de la vista de iOS (3)
La primera vista es realmente 200 x 100. Sin embargo, las vistas en el interior no se recortan a menos que use clipsToBounds
.
Una solución preferible a su problema es dejar de agregar vistas que excedan las dimensiones o detener el cambio de tamaño de las vistas para que desborden el espacio disponible, según corresponda.
(Calcular realmente los límites completos, incluidas todas las subvistas en la jerarquía, no es difícil, solo un montón de trabajo que en realidad no lo llevará a ninguna parte. UIView
permite que las vistas sean más grandes que sus contenedores, pero no da necesariamente cualquier garantía sobre lo que funcionará correctamente y es probable que sea una fuente de errores si se aprovecha. La razón de clipsToBounds
es que el recorte es costoso pero necesario durante la animación donde las subvistas pueden moverse temporalmente fuera de los límites para efectos de un efecto antes de que se eliminen de la vista.)
¿Cómo obtendré las dimensiones reales de una vista o subvista que estoy controlando? Por ejemplo:
UIView *firstView = [[UIView alloc] initWithFrame:CGRectMake(0,0,200,100)];
[self addSubview:firstView];
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(10, 20, 230, 120)];
[firstView addSubview:button];
Como puede ver, mi objeto de button
excede las dimensiones de la vista a la que se está agregando.
Con esto está la mente (suponiendo que se agreguen muchos objetos como subvistas), ¿cómo puedo determinar el ancho y la altura real de firstView
?
firstview.frame.size.width firstview.frame.size.height
Si desea que el botón tenga el mismo ancho y alto que firstView, debe usar la propiedad de límites de UIView de esta manera:
UIView *firstView = [[UIView alloc] initWithFrame:CGRectMake(0,0,200,100)];
[self addSubview:firstView];
UIButton *button = [[UIButton alloc] initWithFrame:firstView.bounds];
[firstView addSubview:button];
Para obtener el ancho / alto de firstView, podrías hacer algo como esto:
CGSize size = firstView.bounds.size;
NSInteger width = size.width;
NSInteger height = size.height;