2017-02-13 6 views
0

Я хочу, чтобы у моего представления стека было три вида: красное изображение, синее изображение и регистр. Дело в том, что в то время как красная и синяя кнопки выглядят просто отлично, в режиме регистрации нет.Одно из подвид представлений стека вообще не отображается

enter image description here

Это, как настроить и разместить свой вид стека внутри моей точки зрения зрения контроллера:

func setupSocialStackView() { 
    let socialStackView = UIStackView(arrangedSubviews: redImage, blueImage, registerView]) 
    socialStackView.axis = .vertical 
    socialStackView.distribution = .fillProportionally 
    view.addSubview(socialStackView) 
    socialStackView.spacing = 8 

    // NSLayoutAnchor constraints here to place stack view 
    // inside my view controller view 
} 

Это код с моей точки зрения регистра, который не показывает:

lazy var registerView: UIView = { 
    let containerView = UIView() 

    // Register button 
    let registerButton = UIButton(type: .system) 
    registerButton.setTitle("Register", for: .normal) 
    registerButton.titleLabel?.font = UIFont.systemFont(ofSize: 12, weight: UIFontWeightLight) 
    registerButton.titleLabel?.textAlignment = .center 
    registerButton.setTitleColor(UIColor.black, for: .normal) 
    registerButton.titleLabel?.textColor = UIColor(r: 91, g: 90, b: 90) 
    registerButton.addTarget(self, action: #selector(presentRegisterController), for: .touchUpInside) 
    containerView.addSubview(registerButton) 

    return containerView 
}() 

Остальные два вида представления вида стека: UIImageView s.

Почему эти два изображения есть, а вид регистра нет? Я что-то упускаю?

+0

Вы можете показать ограничения отображения не отображаемого? – Ocunidee

+1

'UIView' по умолчанию не имеет' intrinsicContentSize', поэтому для его использования с 'UIStackView' с вертикальной осью вам нужно добавить ограничения по высоте. Поскольку это представление стека устанавливает высоту вашего вида регистра на 0. – beyowulf

ответ

1

Возможно, вы не указали свой размер UIButton. Посмотрите, что вы получите, если вы добавляете autoresizingMask строку:

registerButton.addTarget(self, action: #selector(presentRegisterController), for: .touchUpInside) 

    registerButton.autoresizingMask = [.flexibleWidth, .flexibleHeight] 

    containerView.addSubview(registerButton) 
1

Похоже, вы создаете подкласс UIView, чтобы показать кнопку «Зарегистрироваться?». Это слишком сложно, UIButton уже является подклассом UIView, поэтому все, что вам нужно сделать, это добавить кнопку регистрации прямо в ваш стек! Надеюсь, что поможет

+0

Я действительно хотел добавить больше материала в регистр, а не только кнопку. Спасибо за ваш ответ. – Cesare

+0

Хорошо, почему у вас есть контейнер UIView внутри вашего регистра UIView? Просто добавьте кнопку register в self.addSubview. Кроме того, как сказал @beyowulf, если вы добавите UIView в стек, он не знает, насколько он большой, поэтому вам нужно либо дать представление ограничение по высоте, либо вы можете ограничить вашу кнопку регистрации в виде регистра (используя автозапуск, а не кадры), чтобы вы регистрировали представление, знает, насколько большой будет его контент. – Florensvb

1

мнение, что не отображается является контейнером UIView, который не имеет собственного размера. Внутри блока lazy var ограничьте края registerButton до containerView, чтобы размер контейнера имел размер.

0

Сначала добавьте все 3 просмотры в stackview. Установите его Расстояние и Распределение от инспектора атрибутов с правой стороны. (Расстояние = 10, распределение = равенство равенства). Теперь выберите представление стека и добавьте соответствующие ограничения.

Вы можете попробовать это.

0

Для меня мне нужно было добавить нижние, правые и левые ограничения для представления внутри представления стека. Потом он появился.

Смежные вопросы