page control ios uiscrollview swift uipagecontrol

ios - control - scroll view swift 4



¿Cómo implemento UIPageControl en Swift? (4)

Creo que usted y / o cualquier otra persona que busque cómo hacer esto encontrará útil esta respuesta . El ejemplo de código me permitió crear un indicador de control de página en mi scrollView, y fue la primera vez que intenté hacer esto. Lo encontré muy claro.

Las líneas que probablemente necesite agregar a su proyecto son:

1: agregue UIScrollViewDelegate como protocolo cuando nombre su clase de controlador de vista.

2: en la declaración de clase crea una variable pageControl. Deberá jugar con los números de fotograma para que aparezca donde lo desea. Los números actuales hicieron uno en el medio de la ventana para mí. Para referencia, los números significan (posición x para la esquina superior izquierda del indicador, coordenada y para la esquina superior izquierda, ancho de indicador de página, altura de indicador de página)

var pageControl : UIPageControl = UIPageControl(frame: CGRectMake(50, 300, 200, 20))

  1. en viewDidLoad establezca el delegado scrollView y llame a `configurePageControl ():

    override func viewDidLoad() { super.viewDidLoad() scrollView.delegate = self configurePageControl() }

  2. necesita agregar dos métodos después de viewDidLoad. uno se llama en viewDidLoad

    func configurePageControl() { self.pageControl.numberOfPages = <some reference to the number of pages> self.pageControl.currentPage = 0 self.pageControl.tintColor = UIColor.redColor() self.pageControl.pageIndicatorTintColor = UIColor.blackColor() self.pageControl.currentPageIndicatorTintColor = UIColor.greenColor() self.view.addSubview(pageControl) }

    y

    func scrollViewDidEndDecelerating(scrollView: UIScrollView) { let pageNumber = round(scrollView.contentOffset.x / scrollView.frame.size.width) pageControl.currentPage = Int(pageNumber) }

El delegado de scrollView es realmente muy simple de configurar. Agregue UIScollViewDelegate como un protocolo que implementará su clase ViewController agregándolo después de la declaración de la clase: class YourClassName: UIScrollViewDelegate . Y luego, en viewDidLoad (), completa la configuración de delegado asignando la propiedad de delegado de la vista de desplazamiento a su clase con la línea scrollView.delegate = self . (nuevamente vea el ejemplo al que me vinculé si necesita más aclaraciones sobre a dónde van estos comandos)

Ok, estoy luchando aquí y no he podido encontrar una solución que funcione. He estado aprendiendo Swift sin experiencia en Objective C (lo sé, lo sé).

En mi aplicación, tengo mi UIViewController principal, una subvista que es transparente pero que se desliza desde la parte inferior de la pantalla, y luego 4 subvistas de la subvista deslizante que funcionan con UIScrollViews. Tengo la función de paginación habilitada y funciona muy bien, pero me gustaría agregar un UIPageControl para cada uno de ellos. En serio, no puedo captar delegados y cómo implementar el uso de swift. Cualquier ayuda sería muy apreciada!

Además, estoy haciendo esto todo programáticamente, así que no IB por favor. Feliz de proporcionar el código si te ayuda. Gracias


Integración UIPageControl usando Swift 4

func configurePageControl() { self.pageview.numberOfPages = items.count self.pageview.currentPage = 0 self.pageview.tintColor = UIColor.red self.pageview.pageIndicatorTintColor = UIColor.black self.pageview.currentPageIndicatorTintColor = UIColor.green }


Los delegados son solo métodos de una clase, que pueden ser asignados a otra clase. Estos métodos suelen ser devoluciones de llamada.

por ejemplo, una devolución de llamada para un TextField, cuando el usuario pulsa regresar, se puede implementar en un Delegado. El delegado se puede implementar en la clase ViewController.

Ahora, cuando el usuario haga clic en regresar, el objeto TextField llamará al método delegado en el objeto ViewController. Lo mejor de esto es que puede acceder a todas las variables y métodos del objeto ViewController desde el método delegado. De lo contrario, necesitaría un identificador para el objeto ViewController dentro del propio objeto TextField.

Los delegados se implementan como protocolos, que son solo interfaces. Por lo tanto, si ViewController implementa el protocolo TextFieldDelegate, todas las devoluciones de llamada de su campo de texto pueden llamarse desde el objeto ViewController.

Espero que esto ayude.


Solo configúralo en un código como este:

private var pageControl = UIPageControl(frame: .zero) private func setupPageControl() { pageControl.numberOfPages = controllers.count pageControl.translatesAutoresizingMaskIntoConstraints = false pageControl.currentPageIndicatorTintColor = UIColor.orange pageControl.pageIndicatorTintColor = UIColor.lightGray.withAlphaComponent(0.8) let leading = NSLayoutConstraint(item: pageControl, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1, constant: 0) let trailing = NSLayoutConstraint(item: pageControl, attribute: .trailing, relatedBy: .equal, toItem: view, attribute: .trailing, multiplier: 1, constant: 0) let bottom = NSLayoutConstraint(item: pageControl, attribute: .bottom, relatedBy: .equal, toItem: view, attribute: .bottom, multiplier: 1, constant: 0) view.insertSubview(pageControl, at: 0) view.bringSubview(toFront: pageControl) view.addConstraints([leading, trailing, bottom]) }