Почему созданный мной стек не отображается? - PullRequest
0 голосов
/ 27 августа 2018
class EventsCell: UICollectionViewCell {
    override init(frame: CGRect) {
        super.init(frame: frame)
        setUpCell()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    lazy var containerView: UIView = {
      let container = UIView()
        container.frame = eventImage.frame
        container.addSubview(eventImage)
        container.layer.masksToBounds = false
        container.translatesAutoresizingMaskIntoConstraints = false
        extensionSetConstraintsWithFormat(horizontalFormat: "|[v0]|", verticalFormat: "|[v0]|", views: [eventImage])
        container.extensionSetShadowEasy(color: UIColor.black.cgColor), offSet: CGSize(width: 0, height: 3))
      return container
    }()

    let eventImage: UIImageView = {
        let eventView = UIImageView()
        eventView.backgroundColor = UIColor.red
        eventView.layer.cornerRadius = 10
        eventView.translatesAutoresizingMaskIntoConstraints = false
        eventView.layer.masksToBounds = true
        eventView.image = UIImage(named: "Event")
        return eventView
    }()

    let usersStackView: UIStackView = {
        let stack = UIStackView()
        stack.backgroundColor = UIColor.orange
        stack.translatesAutoresizingMaskIntoConstraints = false
        stack.axis = .horizontal
        stack.distribution = .fillProportionally
        stack.layer.cornerRadius = 10
        stack.extensionSetShadowEasy(color: UIColor.black.cgColor), offSet: CGSize(width: 0, height: 3))
        return stack
    }()


    func setUpCell(){
        layer.masksToBounds = false
        backgroundColor = UIColor.white
        layer.cornerRadius = 10
        extensionSetShadowEasy(color: UIColor.black.cgColor), offSet: CGSize(width: 5, height: 5))
        addSubview(containerView)
        addSubview(usersStackView)

        extensionSetConstraintsWithFormat(horizontalFormat: "|-10-[v0]-10-|", verticalFormat: "|-10-[v0(200)][v1(50)]-10-|", views: [containerView, usersStackView])
        extensionSetConstraintsWithFormat(horizontalFormat: "|-10-[v0]-10-|", verticalFormat: nil, views: [usersStackView])


    }

}

Я пытаюсь добавить UIStackView в collectionViewCell, но он просто не отображается, я понятия не имею, чего не хватает в моем коде, я установил ограничения, но, похоже, это не работает, другие виды можно добавить просто представление стека не отображается ...

функция, которую я использую для добавления ограничений, является расширением, которое я создал, но я уже несколько раз тестировал его, и оно отлично работает.

Я создаю все по коду для целей обучения, раскадровка не используется, просто код ..

спасибо заранее за ответы) извините за мой плохой код, я новичок ...

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Мой опыт подсказывает, что вы не можете визуализировать UIStackView, потому что он пустой, если UIStackView не имеет дочерних элементов, он не будет визуализироваться, поэтому не имеет значения, если вы установите цвет фона или какие-либо другие свойства, потому что они не покажет.

Если вы хотите показать фон, даже если UIStackView пуст, вы можете заменить его на UIView, а внутри него поместить UIStackView, просто добавьте соответствующие ограничения и свойства. Надеюсь, это поможет.

0 голосов
/ 28 августа 2018

Ваш EventsCell может быть инициализирован с фреймом CGRectZero. т.е. убедитесь, что вы обновляете фреймы подпредставлений ячейки в методе layoutSubviews.

0 голосов
/ 27 августа 2018

Как упомянул @ascentman, не добавляйте подпредставления напрямую в ячейку, а добавляйте представления в contentView.

func setUpCell(){
        layer.masksToBounds = false
        contentView.backgroundColor = UIColor.white
        layer.cornerRadius = 10
        extensionSetShadowEasy(color: UIColor.black.cgColor), offSet: CGSize(width: 5, height: 5))
        contentView.addSubview(containerView)
        contentView.addSubview(usersStackView)

        extensionSetConstraintsWithFormat(horizontalFormat: "|-10-[v0]-10-|", verticalFormat: "|-10-[v0(200)][v1(50)]-10-|", views: [containerView, usersStackView])
        extensionSetConstraintsWithFormat(horizontalFormat: "|-10-[v0]-10-|", verticalFormat: nil, views: [usersStackView])

    }

Попробуйте, это может быть полезно для вас.

Видны ли другие виды или нет? Если видны другие виды, проверьте ограничения, размер вашего стека в 3D-отладчике. Может быть из-за проблемы с ограничением, его размер устанавливает ноль или его вывод из ячейки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...