Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

443
Visualizações
addArrangedSubview vs addSubview

Soy novato y escribí una vista personalizada heredada de StackView y creé un button mediante programación con pocos atributos y cuando lo agrego a mi vista personalizada, tengo dos problemas:

  1. Si uso addArrangedSubview(myBtn) , mi vista ignora los atributos que agregué y llena todo el ancho. Pero si uso addSubView(myBtn) , está bien (un cuadrado azul en 44x44)
  2. Si uso addArrangedSubview(myBtn) , addTarget() no funciona y no se puede hacer clic en myBtn , pero cuando uso addSubView(myBtn) , funciona perfectamente.

Aquí está mi clase de vista personalizada:

 import UIKit class RatingControl: UIStackView { //MARK: Initialization override init(frame: CGRect) { super.init(frame: frame) setupButtons() } required init(coder: NSCoder) { super.init(coder:coder) setupButtons() } //MARK: Private Methods private func setupButtons() { // Create the button let button = UIButton() button.backgroundColor = UIColor.blue // Add constraints button.translatesAutoresizingMaskIntoConstraints = false button.heightAnchor.constraint(equalToConstant: 44.0).isActive = true button.widthAnchor.constraint(equalToConstant: 44.0).isActive = true // Setup the button action button.addTarget(self, action: #selector(ratingButtonTapped(_:)), for: .touchUpInside) // Add the button to the stack addArrangedSubview(button) } //MARK: Button Action @objc func ratingButtonTapped(_ sender: Any) { print("Button pressed 👍") } }

Aquí está la vista previa:

ingrese la descripción de la imagen aquíingrese la descripción de la imagen aquí

¿Cuál es la diferencia entre addSubView() y addArrangedSubview() ? ¿Por qué suceden estos problemas?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Supongo que desea agregar varios botones horizontalmente (como con un control de calificación típico de "estrellas").

Un UIStackView , como se puede deducir de su método .addArrangedSubview() , organiza sus subvistas, en función de sus .axis , .alignment , .distribution y .spacing , así como su frame .

Entonces, lea un poco sobre UIStackView y cómo se puede usar. Lo más probable es que actualmente esté restringiendo su vista personalizada con:

  • cima
  • principal
  • final (o ancho)

Entonces, agregar su botón como un arrangedSubView da como resultado que se extienda al ancho de la vista de pila, porque ese es el valor predeterminado.

Agregarlo como una subview simplemente superpone el botón en la vista de pila, en lugar de permitir que la vista de pila lo organice, y es probable que su vista de pila tenga una altura de cero, por lo que no se puede tocar el botón.

Intente establecer solo restricciones superiores e iniciales cuando agregue su vista de pila personalizada. Eso debería darte un botón de 44 x 44 que se puede tocar.

A medida que agregue más botones usando .addArrangedSubview() , esos botones se organizarán horizontalmente, que es probablemente lo que desea.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda