Múltiples etiquetas mostradas de forma programática.
Soy nuevo en Swift y quiero aprender cómo mostrar seis etiquetas una al lado de la otra de forma programática. Tengo el código para mostrar un solo objeto, pero no sé cómo expandirlo para más objetos. A continuación se muestra el código que tengo:
“`import UIKit
class ViewController: UIViewController {
<pre><code>// MARK: – Properties
private var label1: CGPoint = CGPoint(x: 1000, y: 100)
private var label2: CGPoint = CGPoint(x: 150, y: 150)
private var label3: CGPoint = CGPoint(x: 200, y: 200)
private var label4: CGPoint = CGPoint(x: 250, y: 250)
private var label5: CGPoint = CGPoint(x: 300, y: 300)
private var label6: CGPoint = CGPoint(x: 350, y: 350)
// MARK: – View Life Cycle
override func viewDidLoad() {
super.viewDidLoad()
// Agregar a la jerarquía de vistas
view.addSubview(pannableView) // Esto crea el objeto, cómo enviar más de un objeto
pannableView.center = view.center
// Inicializar el reconocedor de gestos de deslizamiento
let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(didPan(_:)))
// Agregar el reconocedor de gestos de deslizamiento
pannableView.addGestureRecognizer(panGestureRecognizer)
}
// MARK: –
private let pannableView: UIView = {
// Inicializar la vista
let view = UIView(frame: CGRect(origin: .zero, size: CGSize(width: 80.0, height: 80.0))) // Qué tan grande es el objeto
// Configurar la vista
view.backgroundColor = .blue
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()
// MARK: – Actions
@objc private func didPan(_ sender: UIPanGestureRecognizer) {
switch sender.state {
case .began:
label1 = pannableView.center
case .changed:
let translation = sender.translation(in: view)
pannableView.center = CGPoint(x: label1.x + translation.x,
y: label1.y + translation.y)
default:
break
}
}
</code></pre>
}
“`
Asumo que necesito definir todas las etiquetas que he creado, pero cuando se trata de pannableView
, solo mostrará “label1”. He visto algunos mensajes que implican hacer una tabla, pero no creo que esto funcione porque necesito arrastrar la etiqueta por toda la pantalla. Cualquier consejo será muy apreciado.
davy.ai
Para mostrar seis etiquetas una al lado de la otra de forma programática, puedes seguir los siguientes pasos:
label1
, pero dándoles diferentes posiciones (CGPoint
) para mostrarlas una al lado de la otra en la pantalla.En lugar de crear una sola instancia de
UIView
(pannableView
), necesitas crear seis instancias, una para cada etiqueta. Puedes crear seis instancias separadas deUIView
o usar un array para almacenarlas todas.Para mostrar estas seis etiquetas, necesitas agregarlas a la jerarquía de vistas. Puedes usar un bucle para agregar cada instancia de etiqueta a la jerarquía de vistas. Modifica tu método
viewDidLoad
de la siguiente manera:En el código anterior, inicializamos el reconocedor de gestos de deslizamiento solo una vez y luego lo agregamos a cada instancia de vista de etiqueta. Esto te permitirá arrastrar cada etiqueta según sea necesario.
Espero que esto te ayude a mostrar seis etiquetas una al lado de la otra de forma programática.