【问题标题】:Auto layout show button round without fixing height and width自动布局显示按钮圆形而不固定高度和宽度
【发布时间】:2023-03-23 15:29:01
【问题描述】:

我是 iOS 开发的新手,之前从未做过自动布局,实际上我在视图控制器上有七个按钮,需要在每个屏幕上环顾四周而不固定高度和宽度......我看过很多教程但是无法理解我如何在这些圆形按钮上添加约束并将它们显示在每个屏幕上的相同位置。我希望按钮在屏幕增大时实际增大尺寸,在屏幕尺寸减小时减小尺寸。请帮助说明应该添加哪些约束。!this shows how buttons are added on my view controller

【问题讨论】:

    标签: ios objective-c autolayout


    【解决方案1】:

    如果你想要完美的圆形按钮(圆形),那么宽度和高度应该相同。为此,使用倍数 1:1 设置纵横比约束,以使宽度和高度相等。

    根据您提供的屏幕截图,请看下面的约束应该是什么样子:

    【讨论】:

      【解决方案2】:

      嗯,有两点:

      • 位置:嗯,你需要准确理解“每个屏幕中的相同位置”,我想你知道view.frame = CGRectMake(10, 20, 50, 50)但是相同的代码不会导致不同屏幕中的“相同位置”,重要的是你想要哪种方式.想想一个增加的屏幕,你上面有一个正方形,你想让这个正方形变什么?不同的更改风格导致不同的代码。

      • Size:你说要随屏增减平方,基本方法是让square.width && square.height随屏变化,如果用frame layout你可以写view.frame = CGRectMake(10, 20, SCWidth * 0.0666, SCHeight * 0.0833),当然autoLayout支持scale计算,我推荐您使用 Masonry 添加布局,示例代码如下:

      [square mas_remakeConstraints:^(MASConstraintMaker *make) { make.width.equalTo(self.mas_width).multipliedBy(0.0083); }];

      当然,如果你使用 xib 来做,你可以看到约束具有 multiplier 属性来解决问题。

      【讨论】:

        【解决方案3】:

        使用此代码制作圆形按钮.. 您可以通过编程方式获取 Button 的当前高度,然后将高度的一半分配给圆角半径以使其变圆。

        [self.view layoutIfNeeded];
        [self.view setNeedsLayout];
        self.yourButton.layer.cornerRadius = self.yourButton.frame.size.height/2;
        self.yourButton.clipsToBound = YES;
        

        【讨论】:

        • 我已经把它弄圆了......但我希望它出现在相同的位置,根据每个屏幕的需要增加或减少高度和宽度。
        猜你喜欢
        • 2019-02-26
        • 2015-08-06
        • 1970-01-01
        • 1970-01-01
        • 2012-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多