de vista determina su ubicación en supervista. Los límites de la vista determinan las ubicaciones de las subvistas . Eso significa que, si cambia los límites de la vista, su ubicación no cambiará, pero se cambiarán todas las ubicaciones de sus vistas.
anchura y la altura positiva es como se dibuja una vista desde parte superior izquierda a la parte inferior derecha, mientras que el valor negativo es de abajo a la derecha a superior izquierda. Así
frame1 = CGRectMake(100, 100, -50, -50)
es totalmente idéntico a
frame2 = CGRectMake(50, 50, 50, 50).
Y de hecho, si INIT una vista con frame1, se cambia automáticamente a Frame2.
Pero el bounds.origin
de las vistas no son idénticos.Bounds.origin
indica el punto que "dibuja" la vista, por lo que todas las tramas de las subvistas se originarán en este punto.
Por ejemplo, en el paisaje iPhone 6, tenemos:
UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 275, 275)];
leftView.backgroundColor = [UIColor greenColor];
[self.view addSubview:leftView];
UIView *rightView = [[UIView alloc] initWithFrame:CGRectMake(667-50, 375-50, -275, -275)];
rightView.backgroundColor = [UIColor blueColor];
[self.view addSubview:rightView];
Y tenemos:
Encontraremos que el marco de RightView se cambia automáticamente al valor positivo, que es (342, 50, 275, 275), pero es bounts.origin = (-275,-275)
.
y añadimos subvistas:
UIView *leftSubview = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
leftSubview.backgroundColor = [UIColor grayColor];
[leftView addSubview:leftSubview];
UIView *rightSubview= [[UIView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
rightSubview.backgroundColor = [UIColor grayColor];
[rightView addSubview:rightSubview];
Así los límites hace subvista de RightView sigue el origen que init RightView.
Si cambiamos los parámetros de la derechaVer es igual a la izquierdaVer: rightView.bounds = leftView.bounds; Luego, la ubicación de dos subViews es la misma, hemos perdido la información de que el ancho y el alto de rightView son negativos.
Y cambiamos los límites de leftView en lugar de RightView: CGRect grada = leftView.bounds; bounds.origin = CGPointMake (50, 50); leftView.bounds = bounds;
Podemos ver, frame.origin de su subvista se compensa con bounds.origin (utilizando menos, no más).
Para concluir:
view.bounds
determina todas las instalaciones de su subvista (compensado por bounds.origin), mientras que bounds
no afectará a su propia ubicación en su supervista.
Si inicia una vista con ancho y alto negativos, cambiará automáticamente a positivo (que no cambiará la ubicación), pero bounds.origin indica el punto en que comienza a "dibujar" la vista.
Google ha escondido ese puesto por alguna razón inexplicable - ya no estamos autorizados a acceder a ella (me da a una página de inicio de sesión, una redirección forzada de Google.com) – Adam