objective-c uitableview uibutton overlay floating

objective c - UIButton flotante con imagen en una UITableview



objective-c overlay (1)

Puede implementar el delegado scrollViewDidScroll para cambiar su origen y botón flotante mientras el usuario desplaza la tabla, de modo que el botón flote y permanezca en la misma ubicación.

Hay un gran ejemplo en la sesión 125 de la WWDC 2011 que hace exactamente lo que usted desea.

En general, debe guardar el origen y original del botón después de crearlo, o puede hacerlo en viewDidLoad , luego implementar el scrollViewDidScroll y actualizar el marco del botón.

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { CGRect tableBounds = self.tableView.bounds; CGRect floatingButtonFrame = self.floatingButton.frame; floatingButtonFrame.origin.y = self.originalOrigin + tableBounds.origin.y; self.floatingButton.frame = floatingButtonFrame; }

Esta pregunta ya tiene una respuesta aquí:

Intento implementar un botón flotante sobre una vista UITableview . De modo que cuando el contenido se desplaza, el botón permanece en la misma posición. El botón debe contener una imagen transparente.

Hice una prueba de fuga y funcionó bien con insertSubview:aboveSubview: respectivly addSubView

Pero hacer esto en una UITableview de UITableview de un TableViewController no parece funcionar. El botón está en tableView y se desplaza con tableView. Curiosamente, se desplaza también bajo el encabezado de tableView ...

¿Cómo puedo solucionar esto? ¿Que el botón está flotando sobre la vista de tabla?

TableViewController.m (actualizado con el código de trabajo 12.07.2013)

Editar : se agregó una @property (nonatomic) float originalOrigin; en TableViewController.h

- (void)viewDidLoad { [super viewDidLoad]; self.originalOrigin = 424.0; [self addOverlayButton]; } #pragma mark Camera Button - (void)addOverlayButton { // UIButton *oButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; self.oButton = [UIButton buttonWithType:UIButtonTypeCustom]; self.oButton.frame = CGRectMake(132.0, self.originalOrigin, 56.0, 56.0); self.oButton.backgroundColor = [UIColor clearColor]; [self.oButton setImage:[UIImage imageNamed:@"CameraButton56x56.png"] forState:UIControlStateNormal]; [self.oButton addTarget:self action:@selector(toCameraView:) forControlEvents:UIControlEventTouchDown]; [self.view insertSubview:self.oButton aboveSubview:self.view]; } // to make the button float over the tableView including tableHeader - (void)scrollViewDidScroll:(UIScrollView *)scrollView { CGRect tableBounds = self.tableView.bounds; CGRect floatingButtonFrame = self.oButton.frame; floatingButtonFrame.origin.y = self.originalOrigin + tableBounds.origin.y; self.oButton.frame = floatingButtonFrame; [self.view bringSubviewToFront:self.oButton]; // float over the tableHeader }