按比例调整UIStackView中按钮的大小

dan10

我需要布局5个按钮,如下图所示: 图1

我需要它们在不同设备上按比例调整大小。

我的代码中有一种方法可以设置5个按钮的视图。

UIStackView *stackView = [[UIStackView alloc]init];

// Add buttons to stackView (buttons are initialised)
[stackView addArrangedSubview:_button1];
[stackView addArrangedSubview:_button2];
[stackView addArrangedSubview:_button3];
[stackView addArrangedSubview:_button4];
[stackView addArrangedSubview:_button5];

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

stackView.axis = UILayoutConstraintAxisVertical;
stackView.distribution = UIStackViewDistributionFillEqually;
stackView.spacing = 5;

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

// 80% of screen height should be used for buttons
CGFloat screenHeightAvailableForButtons = 80/100;
// Calculate multiplier for height of the buttons (5 buttons)
CGFloat buttonMultiplier = screenHeightAvailableForButtons /5;
// 25% of screen width should be used for buttons
CGFloat screenWidthMultiplier =  25/100;

[_button1.widthAnchor constraintEqualToAnchor:self.view.widthAnchor multiplier: screenWidthMultiplier].active = true;
[_button1.heightAnchor constraintEqualToAnchor: self.view.heightAnchor multiplier: buttonMultiplier].active = true;

[_button2.widthAnchor constraintEqualToAnchor:self.view.widthAnchor multiplier: screenWidthMultiplier ].active = true;
[_button2.heightAnchor constraintEqualToAnchor: self.view.heightAnchor multiplier: buttonMultiplier].active = true;

[_button3.widthAnchor constraintEqualToAnchor:self.view.widthAnchor multiplier: screenWidthMultiplier ].active = true;
[_button3.heightAnchor constraintEqualToAnchor: self.view.heightAnchor multiplier: buttonMultiplier].active = true;

[_button4.widthAnchor constraintEqualToAnchor:self.view.widthAnchor multiplier: screenWidthMultiplier ].active = true;
[_button4.heightAnchor constraintEqualToAnchor: self.view.heightAnchor multiplier: buttonMultiplier].active = true;

[_button5.widthAnchor constraintEqualToAnchor:self.view.widthAnchor multiplier: screenWidthMultiplier ].active = true;
[_button5.heightAnchor constraintEqualToAnchor: self.view.heightAnchor multiplier: buttonMultiplier].active = true;

此代码返回一个空白视图。我使用方法不正确吗?
我无法弄清楚自己在做什么错。我需要在目标c中以编程方式完成此操作。

谢谢

邦操作员

对于您的情况,您无需在按钮的堆栈视图内设置约束。堆栈视图将自动处理此问题。

试试这个

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    UIStackView *stackView = [[UIStackView alloc]initWithFrame:self.view.bounds];
    stackView.backgroundColor = [UIColor darkGrayColor];
    _button1 = [UIButton buttonWithType:UIButtonTypeSystem];
    [_button1 setTitle:@"Button 1" forState:UIControlStateNormal];
    _button1.translatesAutoresizingMaskIntoConstraints = NO;
    _button1.backgroundColor = [UIColor lightGrayColor];

    _button2 = [UIButton buttonWithType:UIButtonTypeSystem];
    [_button2 setTitle:@"Button 2" forState:UIControlStateNormal];
    _button2.translatesAutoresizingMaskIntoConstraints = NO;
    _button2.backgroundColor = [UIColor lightGrayColor];

    _button3 = [UIButton buttonWithType:UIButtonTypeSystem];
    [_button3 setTitle:@"Button 3" forState:UIControlStateNormal];
    _button3.translatesAutoresizingMaskIntoConstraints = NO;
    _button3.backgroundColor = [UIColor lightGrayColor];


    _button4 = [UIButton buttonWithType:UIButtonTypeSystem];
    [_button4 setTitle:@"Button 4" forState:UIControlStateNormal];
    _button4.translatesAutoresizingMaskIntoConstraints = NO;
    _button4.backgroundColor = [UIColor lightGrayColor];

    _button5 = [UIButton buttonWithType:UIButtonTypeSystem];
    [_button5 setTitle:@"Button 5" forState:UIControlStateNormal];
    _button5.translatesAutoresizingMaskIntoConstraints = NO;
    _button5.backgroundColor = [UIColor lightGrayColor];

    // Add buttons to stackView (buttons are initialised)
    [stackView addArrangedSubview:_button1];
    [stackView addArrangedSubview:_button2];
    [stackView addArrangedSubview:_button3];
    [stackView addArrangedSubview:_button4];
    [stackView addArrangedSubview:_button5];

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

    stackView.axis = UILayoutConstraintAxisVertical;
    stackView.distribution = UIStackViewDistributionFillEqually;
    stackView.alignment = UIStackViewAlignmentFill;
    stackView.spacing = 5;

    //Layout Constraints for stackView
    [stackView.layoutMarginsGuide.topAnchor constraintEqualToAnchor:self.view.layoutMarginsGuide.topAnchor].active = true;
    [stackView.layoutMarginsGuide.bottomAnchor constraintEqualToAnchor:self.view.layoutMarginsGuide.bottomAnchor].active = true;
    // 25% of screen width should be used for buttons
    [stackView.widthAnchor constraintEqualToAnchor:self.view.widthAnchor multiplier:25.0/100.0].active = true;
    [stackView.layoutMarginsGuide.centerXAnchor constraintEqualToAnchor:self.view.layoutMarginsGuide.centerXAnchor].active = true;

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Firefox中按比例调整图像大小

来自分类Dev

在Webapp中按比例调整div的大小

来自分类Dev

WPF:按比例调整两个按钮的大小

来自分类Dev

在 Xamarin Forms 中按比例调整框视图大小的动画

来自分类Dev

Xcode-自动布局中的iPhone 4s,5、6、6 +按比例调整图像大小的按钮

来自分类Dev

按宽度按比例调整UIImage的大小

来自分类Dev

按宽度按比例调整UIImage的大小

来自分类Dev

按比例调整UIImage的大小,然后裁剪

来自分类Dev

按比例调整表格大小以适合div

来自分类Dev

如何按比例调整标签大小

来自分类Dev

如何使用UIStackView按比例缩放大小?

来自分类Dev

HTML / CSS中的调整大小按钮无法按预期工作

来自分类Dev

根据屏幕大小按比例调整文本大小

来自分类Dev

使用jQuery按比例调整iframe的大小以适合DIV

来自分类Dev

具有自动布局的NSSplitView,防止按比例调整大小

来自分类Dev

调整UIBarButtonItem的Imageview的大小,以便按比例缩小图像(iOS)

来自分类Dev

在Java中使用BorderLayout按比例调整大小

来自分类Dev

JS函数按比例调整背景大小无法正常工作

来自分类Dev

具有自动布局的NSSplitView,防止按比例调整大小

来自分类Dev

保持按钮位置与调整图像大小成比例

来自分类Dev

调整phpBB中的按钮大小

来自分类Dev

UIToolbar中的“调整大小”按钮

来自分类Dev

强制同一行中的多个图像按比例调整大小,而不是将它们移动到新行

来自分类Dev

如何在Xcode中调整UIStackView的子视图大小?

来自分类Dev

防止按按钮内的单词数来调整按钮的大小

来自分类Dev

使用 AutoLayout 调整 UIStackView 的大小

来自分类Dev

在Android中调整背景大小时调整按钮的大小

来自分类Dev

在窗口调整大小时按比例调整div的宽度和高度

来自分类Dev

在Matlab中调整图像大小(绘制正方形/比例)

Related 相关文章

  1. 1

    在Firefox中按比例调整图像大小

  2. 2

    在Webapp中按比例调整div的大小

  3. 3

    WPF:按比例调整两个按钮的大小

  4. 4

    在 Xamarin Forms 中按比例调整框视图大小的动画

  5. 5

    Xcode-自动布局中的iPhone 4s,5、6、6 +按比例调整图像大小的按钮

  6. 6

    按宽度按比例调整UIImage的大小

  7. 7

    按宽度按比例调整UIImage的大小

  8. 8

    按比例调整UIImage的大小,然后裁剪

  9. 9

    按比例调整表格大小以适合div

  10. 10

    如何按比例调整标签大小

  11. 11

    如何使用UIStackView按比例缩放大小?

  12. 12

    HTML / CSS中的调整大小按钮无法按预期工作

  13. 13

    根据屏幕大小按比例调整文本大小

  14. 14

    使用jQuery按比例调整iframe的大小以适合DIV

  15. 15

    具有自动布局的NSSplitView,防止按比例调整大小

  16. 16

    调整UIBarButtonItem的Imageview的大小,以便按比例缩小图像(iOS)

  17. 17

    在Java中使用BorderLayout按比例调整大小

  18. 18

    JS函数按比例调整背景大小无法正常工作

  19. 19

    具有自动布局的NSSplitView,防止按比例调整大小

  20. 20

    保持按钮位置与调整图像大小成比例

  21. 21

    调整phpBB中的按钮大小

  22. 22

    UIToolbar中的“调整大小”按钮

  23. 23

    强制同一行中的多个图像按比例调整大小,而不是将它们移动到新行

  24. 24

    如何在Xcode中调整UIStackView的子视图大小?

  25. 25

    防止按按钮内的单词数来调整按钮的大小

  26. 26

    使用 AutoLayout 调整 UIStackView 的大小

  27. 27

    在Android中调整背景大小时调整按钮的大小

  28. 28

    在窗口调整大小时按比例调整div的宽度和高度

  29. 29

    在Matlab中调整图像大小(绘制正方形/比例)

热门标签

归档