如何以编程方式更改视图控制器的宽度大小?

时间:2018-09-29 06:45:30

标签: ios swift uiviewcontroller

我正在尝试手动制作viewcontroller,而无需按照本教程https://www.youtube.com/watch?v=Hl_Re_KLhcY&t=141s

使用pod

enter image description here

但是 sideMenuVC (绿色的)的宽度设置正确,我的意思是,sideMenuVC应该是 MainMenuVC 大小的80%。因此,如果我从iPhone 5s更改为iPhoneX,则autolayout看起来仍然很完美。但这就是我得到的

enter image description here

sideMenuVC应该仅为80%,但在iPhone 5s上看起来像是完整尺寸

在sideMenuVC viewDidLoad中,我想设置类似的东西

class SideMenuVC: UIViewController {

    @IBOutlet var sideMenu: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()
        sideMenu.frame.width = self.view.frame.width / 2
       }
}

但是它不起作用,因为它只能获得属性

所以我想在这里改变宽度 enter image description here

1 个答案:

答案 0 :(得分:1)

要获得所需的输出,最理想的是保持视图控制器的宽度不变,但在内部添加一个普通的view并附带以下约束条件

  1. 领先于superview,常量值为0
  2. 从顶部到superview的恒定值为0
  3. 从下到superview,常数为0
  4. 宽度等于superview,乘数值为4:5

您还需要将UIViewController的默认view属性的背景色设置为.clear

最后,将新创建的UIViewController的显示样式设置为Over Current Context

  

当使用UIModalPresentationFullScreen样式呈现视图控制器时,UIKit通常会在过渡动画完成后删除基础视图控制器的视图。您可以通过指定UIModalPresentationOverCurrentContext样式来防止删除这些视图。当显示的视图控制器具有透明区域以使基础内容显示出来时,您可以使用该样式。