Making a UIButton a % of the screen size

旧街凉风 提交于 2019-12-19 07:18:23

问题


I noticed certain button sizes look great on one the iPhone 5 simulator but do not look as good on the iPhone 6 simulator and this is because the heights or constraints that I place on the UIButtons end up leaving a lot of blank space down the bottom of my App Screen.

I would like to have a button that is 40% of the screen size regardless of what device I am simulating on.

Any ideas on how to make the size of the button stay 40% of the screen size regardless of the device?


回答1:


  1. Ctrl drag from button to superview and select Equal Widths
  2. Open Size Inspector edit Equal Widths constraint and set multiplier to 0.4. And you will see something like this:

  3. Add missing constraints and update frames.




回答2:


You can't set a constraint to be 40% of the screen height. However, if the button always has a 20px leading and trailing to the superview you could use that width and set an aspect ratio height.

Another way could be to use UIScreen.mainScreen().bounds.size.height * 0.4 for your button height.

A third way is to use the button's superview to set the height. Assuming that your button is a direct child of a UIViewController's view: view.bounds.size.height * 0.4.

There's probably a bunch of other ways to do this as well but none of them will involve setting the height to an actual percentage as far as I'm aware.




回答3:


This function gives you the bounds of the screen

var bounds = UIScreen.mainScreen().bounds

And then you can set the button width multipliying 0.4 x bounds.size.width

Regards




回答4:


Swift 4.2

In code it's really easy:

override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubview(button)
        button.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        button.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true

        button.widthAnchor.constraint(equalToConstant: 100).isActive = true
        button.heightAnchor.constraint(equalToConstant: UIScreen.main.bounds.height * 0.4).isActive = true
    }

or use this instead of current heightAnchor:

button.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.4).isActive = true

hope this help :)




来源:https://stackoverflow.com/questions/31043918/making-a-uibutton-a-of-the-screen-size

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!