UIStackView无法显示

时间:2016-02-05 10:10:34

标签: swift layout uistackview

在我的viewController let stackView = UIStackView() stackView.axis = .Vertical self.view.addSubview(stackView) for _ in 1..<100{ let vw = UIButton(type: .System) vw.setTitle("Button", forState: .Normal) stackView.addArrangedSubview(vw) } 方法中,我有:

<?php

use FOS\UserBundle\Model\User as BaseUser;

abstract class AbstractStrategyNoneEntity extends BaseUser
{
    /**
     * @ORM\Column(type="string", length=255)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="NONE")
     */
    protected $id;
}

abstract class AbstractStrategyAutoEntity extends BaseUser
{
    /**
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     *
     */
    protected $id;
}

但是当我编译时,我只得到一个完全白色的屏幕。 我做错了什么?

2 个答案:

答案 0 :(得分:5)

您正在将堆栈视图添加到父视图,但您没有告诉父视图如何放置堆栈视图。如果您使用的是基于约束的布局,则需要将堆栈视图固定到父视图的某些边缘:

view.addConstraint(NSLayoutConstraint(item: stackView, Attribute: .Top, relatedBy: .Equal, toItem: self.view, attribute: .Top, multiplier: 1.0, constant: 0.0)
view.addConstraint(NSLayoutConstraint(item: stackView, Attribute: .Leading, relatedBy: .Equal, toItem: self.view, attribute: .Leading, multiplier: 1.0, constant: 0.0)
view.addConstraint(NSLayoutConstraint(item: stackView, Attribute: .Trailing, relatedBy: .Equal, toItem: self.view, attribute: .Trailing, multiplier: 1.0, constant: 0.0)

这会将堆栈视图固定到视图的顶部,前端和后端。

另一种方法是使用Interface Builder来设置约束,因为它们在代码中管理起来非常冗长。

答案 1 :(得分:1)

您已为堆栈视图添加约束或设置框架。请检查以下修改后的代码:

    let stackView = UIStackView()
    stackView.axis = .Vertical
    stackView.distribution = .FillEqually

    for i in 1..<100{
        let vw = UIButton(type: .System)
        vw.setTitle("Button\(i)", forState: .Normal)
        stackView.addArrangedSubview(vw)
    }

    self.view.addSubview(stackView)
    stackView.frame = self.view.bounds