que framework iphone objective-c cocoa-touch uiview

iphone - framework - uikit ios



Haciendo que la vista cambie de tamaƱo a su padre cuando se agrega con addSubview (5)

Probado en Xcode 9.4, Swift 4 Otra forma de resolver este problema es, puede agregar

override func layoutSubviews() { self.frame = (self.superview?.bounds)! }

en la clase subview.

Estoy teniendo un problema al usar addSubview.

Código de ejemplo:

ParentView *myParentView = [[ParentView alloc] initWithNibName:@"ParentView " bundle:nil]; ChildeView *myChildeView = [[ChildeView alloc] initWithNibName:@"ChildeView" bundle:nil]; //... parent frame resized with setFrame lets say to x:0, y:0, W:320, H:411 [[myParentView view] addSubview: [myChildeView view]];

Mi hijo cuando se agrega es más grande que el padre, y no cambia el tamaño de su marco a los límites del padre. No puedo usar "subvistas de recorte" en el elemento principal y "Autoresize Subviews" no funciona si el marco principal no se redimensiona nuevamente. ¿Hay alguna propiedad que haga que una subvista cambie de tamaño automáticamente a los límites de sus padres sin usar setFrame en cada niño?


Si no está utilizando Diseño automático, ¿ha intentado configurar la máscara de tamaño automático de la vista secundaria? Prueba esto:

myChildeView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);

Además, es posible que deba llamar

myParentView.autoresizesSubviews = YES;

para obtener la vista principal para cambiar el tamaño de sus subvistas automáticamente cuando cambia su marco.

Si aún está viendo el dibujo de la vista secundaria fuera del marco de la vista principal, existe una buena posibilidad de que la vista principal no esté recortando su contenido. Para arreglar eso, llama

myParentView.clipsToBounds = YES;


Siempre puede hacerlo en sus UIViews - (void)didMoveToSuperview method. Se llamará cuando se agregue o elimine de su padre (nulo cuando se elimine). En ese momento, simplemente ajusta tu tamaño al de tus padres. A partir de ese punto la máscara de autorize debería funcionar correctamente.


Simplemente copie el marco de la vista principal a la vista secundaria y luego agréguelo. Después de eso funcionará el autoresizing. En realidad, solo debe copiar el tamaño CGRectMake (0, 0, parentView.frame.size.width, parentView.frame.size.height)

childView.frame = CGRectMake(0, 0, parentView.frame.size.width, parentView.frame.size.height); [parentView addSubview:childView];


eso es todo lo que necesitas

childView.frame = parentView.bounds