gpt4 book ai didi

ios - 如何使用 iOS 自动布局使菜单中的按钮居中?

转载 作者:行者123 更新时间:2023-11-29 02:50:50 24 4
gpt4 key购买 nike

我正在尝试以编程方式将按钮添加到 iOS 中菜单的水平中心。这样每个按钮都会出现在前一个按钮的下方。

我的菜单是一个名为 viewToPlaceButtonsOn 的 UIView,我有一个变量来存储最后一个名为 previousButton 的按钮。

看起来很简单吧?任何人都可以帮我弄清楚为什么我会这么错吗?

- (void)makeButton:(NSString*) buttonTitle {
UIButton* menuButton = [[UIButton alloc] init];
[menuButton setTitle: buttonTitle forState:UIControlStateNormal];
[menuButton setBackgroundColor:[UIColor redColor]];
[viewToPlaceButtonsOn addSubview:menuButton];

[viewToPlaceButtonsOn addConstraint:[NSLayoutConstraint constraintWithItem:menuButton
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:previousButton
attribute:NSLayoutAttributeCenterX
multiplier:1.0f
constant:0.0f]];

[viewToPlaceButtonsOn addConstraint:[NSLayoutConstraint constraintWithItem:menuButton
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:previousButton
attribute:NSLayoutAttributeTop
multiplier:1.0f
constant:50.0f]];

[viewToPlaceButtonsOn addConstraint:[NSLayoutConstraint constraintWithItem:menuButton
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0F
constant:200]];

[viewToPlaceButtonsOn addConstraint:[NSLayoutConstraint constraintWithItem:menuButton
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0F
constant:40]];

NSLog(@"Button's Frame: %f x %f (%f x %f)", [menuButton frame].origin.x, [menuButton frame].origin.y, [menuButton frame].size.width, [menuButton frame].size.height);

previousButton = menuButton;
}

最佳答案

我立即想到了一些事情。您需要设置

menuButton.translatesAutoresizingMaskIntoConstraints = NO; 

为了使您的约束正确,否则自动布局将添加自己的约束。

此外,您的 NSLog 将不准确,因为此时尚未运行布局。一旦 layoutSubviews 被调用,那么您的 View 框架将由自动布局设置。要确认这一点,您可以使用调试器在方法调用结束时打印按钮

po menuButton

然后让它继续,然后暂停程序,复制并粘贴从上一个 po 语句中获得的按钮的内存地址,您应该看到框架已设置

po 0x039484

关于ios - 如何使用 iOS 自动布局使菜单中的按钮居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24560056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com