ios - 以编程方式在 UIStackView 中添加 View

标签 ios objective-c ios9 uistackview

我正在尝试以编程方式在 UIStackView 中添加 View 。 现在我的代码是:

UIView *view1 = [[UIView alloc]init];
view1.backgroundColor = [UIColor blackColor];
[view1 setFrame:CGRectMake(0, 0, 100, 100)];

UIView *view2 =  [[UIView alloc]init];
view2.backgroundColor = [UIColor greenColor];
[view2 setFrame:CGRectMake(0, 100, 100, 100)];

[self.stack1 addArrangedSubview:view1];
[self.stack1 addArrangedSubview:view2];

当我部署应用程序时,只有 1 个 View ,它是黑色的。(view1 也获取 view2 的参数)

最佳答案

堆栈 View 使用固有内容大小,因此使用布局约束来定义 View 的尺寸。

有一种快速添加约束的简单方法(示例):

[view1.heightAnchor constraintEqualToConstant:100].active = true;

完整代码:

- (void) setup {

    //View 1
    UIView *view1 = [[UIView alloc] init];
    view1.backgroundColor = [UIColor blueColor];
    [view1.heightAnchor constraintEqualToConstant:100].active = true;
    [view1.widthAnchor constraintEqualToConstant:120].active = true;


    //View 2
    UIView *view2 = [[UIView alloc] init];
    view2.backgroundColor = [UIColor greenColor];
    [view2.heightAnchor constraintEqualToConstant:100].active = true;
    [view2.widthAnchor constraintEqualToConstant:70].active = true;

    //View 3
    UIView *view3 = [[UIView alloc] init];
    view3.backgroundColor = [UIColor magentaColor];
    [view3.heightAnchor constraintEqualToConstant:100].active = true;
    [view3.widthAnchor constraintEqualToConstant:180].active = true;

    //Stack View
    UIStackView *stackView = [[UIStackView alloc] init];

    stackView.axis = UILayoutConstraintAxisVertical;
    stackView.distribution = UIStackViewDistributionEqualSpacing;
    stackView.alignment = UIStackViewAlignmentCenter;
    stackView.spacing = 30;


    [stackView addArrangedSubview:view1];
    [stackView addArrangedSubview:view2];
    [stackView addArrangedSubview:view3];

    stackView.translatesAutoresizingMaskIntoConstraints = false;
    [self.view addSubview:stackView];


    //Layout for Stack View
    [stackView.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor].active = true;
    [stackView.centerYAnchor constraintEqualToAnchor:self.view.centerYAnchor].active = true;
}

注意:这是在 iOS 9 上测试的

UIStackView Equal Spacing (centered)

关于ios - 以编程方式在 UIStackView 中添加 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30728062/

相关文章:

ios - UICollectionView 页脚未显示

javascript - 从 swift 4 调用 paypal javascript 函数

iphone - IOS 将 CAlayer 应用于所有 UILabel 层

ios - 休息套件 : Map relationship from JSON parentId

objective-c - QT运行objective-c代码

ios - UIAlertView 中的键盘关闭动画

ios - 通过网络代理工具下载或查看作为多部分请求(PNG、PDF)发送的文件?

ios - 在 View did load 方法中安排本地通知

ios - 在某些 View iOS9 中将状态栏字体颜色设置为黑色

ios - 如何更改 UISearchBar 的背景颜色和占位符位置