iOS: agrega subvista con una position fija en la pantalla

¿Cómo soluciono la position de las subvistas en la pantalla (especialmente en UIScrollView y UITableView)? Creo en storyboard

[self.view addSubview:aSubView]; 

ya no funciona

¿Algunas ideas?

EDITAR # 1: estoy usando un UITableViewController, no un UITableView simple.

EDITAR N ° 2:

 CGRect fixedFrame = self.menuViewRelative.frame; fixedFrame.origin.y = 0 + scrollView.contentOffset.y; self.menuViewRelative.frame = fixedFrame; menuViewRelative = [[UIView alloc] init]; menuViewRelative.backgroundColor = [UIColor grayColor]; menuViewRelative.frame = CGRectMake(0.0, 0.0, 320.0, 50.0); [self.view addSubview:self.menuViewRelative]; 

Como otros señalaron, esto sería un poco más fácil si no utilizas un UITableViewController , pero no es tan difícil de todos modos.

UITableView es una subclass de UIScrollView , por lo que el delegado de la vista de tabla (su instancia de UITableViewController en este caso) también recibirá llamadas de método UIScrollViewDelegate . Todo lo que tienes que hacer es implementar el método que se llama cada vez que cambie los cambios de desplazamiento y ajuste el marco de la vista "fija".

Algo como esto:

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { CGRect fixedFrame = self.fixedView.frame; fixedFrame.origin.y = 20 + scrollView.contentOffset.y; self.fixedView.frame = fixedFrame; } 

Reemplace 20 por el número de puntos que desea que sea desde la parte superior de la vista de tabla. Todavía agrega self.fixedView como una sublist de self.view , esto solo asegurará que parezca que está en una position fija por encima de la vista de la tabla.


Edit: con el código que publicaste, supongo que tu verion debería verse así:

 - (void)viewDidLoad { menuViewRelative = [[UIView alloc] init]; menuViewRelative.backgroundColor = [UIColor grayColor]; menuViewRelative.frame = CGRectMake(0.0, 0.0, 320.0, 50.0); [self.view addSubview:self.menuViewRelative]; } - (void)scrollViewDidScroll:(UIScrollView *)scrollView CGRect fixedFrame = self.menuViewRelative.frame; fixedFrame.origin.y = 0 + scrollView.contentOffset.y; self.menuViewRelative.frame = fixedFrame; } 

¿Puede agregar su subvista a la window, como:

 [self.view.window addSubview:mySubView]; 

Esto funciona para mi. Agregué una vista de información de position de pix en una vista de tabla dinámica.

Si es un controller de vista simple que contiene una vista de tabla, debería funcionar [self.view addSubview: aSubView]. Pero si es un controller de vista de tabla, no funcionará.

Se puede hacer moviendo la vista sub (su) desde UIScrollView a super vista de scrollview.

Aquí hay un ejemplo simple:
Coloque / configure su button sobre la vista de desplazamiento (no dentro de la vista de desplazamiento) como se muestra aquí en esta instantánea. Y también establecer restricciones de button (position) con respecto a super visión de su scrollview.

introduzca la descripción de la imagen aquí

Aquí está ref. instantánea de la jerarquía de position de cada vista sobre cada uno.

introduzca la descripción de la imagen aquí