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

马特研究员

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

我的菜单是一个名为的UIView viewToPlaceButtonsOn,我有一个变量来存储放置的最后一个按钮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之后,您的视图框架将通过自动布局设置。要确认这一点,您可以在方法调用结束时使用调试器打印按钮

po menuButton

然后让它继续,然后暂停程序,复制并粘贴上次声明中获取的按钮的内存地址,您应该看到已设置框架

po 0x039484

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

如何使用自动布局将微调器居中?

来自分类Dev

如何使用自动布局将两个元素居中?

来自分类Dev

使用自动布局将中心居中或固定到顶部

来自分类Dev

使用自动布局目标 C 将图像居中到视图

来自分类Dev

如何使用大小类和自动布局将两个UI按钮在Xib中水平对齐

来自分类Dev

如何将面板中的按钮居中

来自分类Dev

如何将面板中的按钮居中

来自分类Dev

iOS:自动布局多个按钮

来自分类Dev

如何使用自动布局在iOS 8的视图中设置宽度可调的按钮?

来自分类Dev

自动布局将多个元素连续居中

来自分类Dev

自动将所有元素居中的布局

来自分类Dev

在流体布局中创建居中对齐菜单

来自分类Dev

iOS-使用自动布局创建比例按钮,标签等

来自分类Dev

使用自动布局的带有按钮的iOS水平滚动视图

来自分类Dev

使用自动布局将视图放置在主页按钮的侧面

来自分类Dev

使用自动布局将按钮定位在中心附近

来自分类Dev

使用自动布局垂直居中子视图

来自分类Dev

Angular Material Flex 布局 - 居中对齐菜单按钮

来自分类Dev

如何将菜单中除图标之外的文字居中?

来自分类Dev

使按钮在线性布局中居中

来自分类Dev

如何使用自动布局连续对齐2个按钮?

来自分类Dev

如何使用自动布局连续对齐2个按钮?

来自分类Dev

如何使用CSS将按钮居中而不使用div

来自分类Dev

如何使用自动布局获取iOS中2个元素之间的动态距离

来自分类Dev

将div中的<a>按钮居中

来自分类Dev

将按钮居中于DIV中

来自分类Dev

如何使用边距将容器居中:自动

来自分类Dev

如何使用边距将容器居中:自动

Related 相关文章

热门标签

归档