如何根据xCode中设备的屏幕大小来更改约束在一起的按钮的大小?

时间:2018-08-07 14:33:49

标签: ios swift xcode uibutton autolayout

我制作了一个应用,其中两个ViewController分别显示不同的按钮。在第一个显示控制器上,有一个录音按钮,一个录音标签和一个停止录音按钮。记录标签“附加”到“记录声音”按钮,“停止记录”按钮“附加”到标签,所有这些都使用约束。我遇到的问题是,在不同的设备上,按钮的大小保持不变,这会导致混乱的界面或空的界面,具体取决于设备。我在互联网上尝试了不同的修复程序,但它们仅适用于一个单独的按钮,不适用于一组按钮。

我想学习一种可以根据屏幕尺寸更改按钮或堆栈视图尺寸的解决方案

我还想学习如何使用第二个ViewController中多个堆栈视图中的按钮来执行此操作。

示例:

iPhone 4s / SE:在横向模式下,停止录制按钮被切断。与屏幕尺寸相比,两个视图中的按钮都大了两个。

iPad:与屏幕尺寸相比,按钮太小。

以下是我查看并尝试的修复程序:

How can I dynamically set the size of the imageView according to the size of the image

Adjust button sizes based on screen size

Imgur拒绝了我的请求,因此我无法上传问题图片。

1 个答案:

答案 0 :(得分:0)

也许您可以尝试此操作,首先检测当前屏幕的大小,以便以编程方式修改按钮的大小以获得正确的位置。

var heightScreen: CGFloat = 0
var widthScreen: CGFloat = 0

    override func viewWillAppear(_ animated: Bool) {
         super.viewWillAppear(animated)

         let bounds = UIScreen.main.bounds
         self.heightScreen = bounds.size.height //get the height of screen
         self.widthScreen = bounds.size.width //get the width of screen

         //once you have the sizes, you can validate them, for instance..

                //for iPhone 5/5s/SE
            if self.heightScreen==568.0 && self.widthScreen==320.0 { 
                 //here you can set the correct size to your button, depending of the iPhone's screen

                // for iPhone 6/6s/7/7s
            }else if self.heightScreen==667.0 && self.widthScreen==375.0{
                //here....

                //// for iPhone 6s Plus/ 7s Plus
            }else if self.heightScreen==736.0 && self.widthScreen==414.0{
                //here....

                //for iPad Mini / Air
            }else if self.heightScreen==1024.0 && self.widthScreen==768.0{
                //here....

                //iPad Pro
            }else if self.heightScreen==1366.0 && self.widthScreen==1024.0{
                //here....
            }

    }