2014-11-03 126 views
36

我在启动时修改我的UIView高度有问题。如何更改UIView大小?

我必须UIView,我希望一个屏幕尺寸* 70,另一个填补空白。

这里是我

@IBOutlet weak var questionFrame: UIView! 
@IBOutlet weak var answerFrame: UIView! 
let screenSize:CGRect = UIScreen.mainScreen().bounds 

questionFrame.frame.size.height = screenSize.height * 0.70 
answerFrame.frame.size.height = screenSize.height * 0.30 

它在运行时对应用程序没有任何影响。 我使用自动布局,但我只有边距限制...

我是否全部做错了?

+2

questionFrame.frame = CGRectMake(0,0,self.view.frame.width,self.view.frame.height * 0.7) answerFrame.frame =(0,self.view.frame.height * 0.7,self .view.frame.width,self.view.frame.height * 0.3)你喜欢这样的事情吗? – User4 2014-11-03 02:00:24

回答

38

你在这里。这应该工作。

questionFrame.frame = CGRectMake(0 , 0, self.view.frame.width, self.view.frame.height * 0.7) 

answerFrame.frame = CGRectMake(0 , self.view.frame.height * 0.7, self.view.frame.width, self.view.frame.height * 0.3) 
+1

刚刚在xcode 7.3上试了一下。为了使这个CGRectMake()生效,UIView(我的视图实际上是UIView的一个子类)需要将View-> Mode设置为“重绘”或“适合缩放”,并且CGRectMake()需要处于我的子类'drawRect()方法。否则,故事板中的大小定义将会生效。 – rockhammer 2016-07-13 14:42:38

+0

它是'xy width height'同时,最好使用'userView.frame.size.height = 10 userView.frame.size.width = 10' – user25 2018-02-14 10:19:04

18

嗨创建此扩展如果你想。 更新2015年雨燕2.0

创建文件Extends.Swift添加代码(添加您要更改高度进口基础

/** 
Get Set x Position 

- parameter x: CGFloat 
by DaRk-_-D0G 
*/ 
var x:CGFloat { 
    get { 
     return self.frame.origin.x 
    } 
    set { 
     self.frame.origin.x = newValue 
    } 
} 
/** 
Get Set y Position 

- parameter y: CGFloat 
by DaRk-_-D0G 
*/ 
var y:CGFloat { 
    get { 
     return self.frame.origin.y 
    } 
    set { 
     self.frame.origin.y = newValue 
    } 
} 
/** 
Get Set Height 

- parameter height: CGFloat 
by DaRk-_-D0G 
*/ 
var height:CGFloat { 
    get { 
     return self.frame.size.height 
    } 
    set { 
     self.frame.size.height = newValue 
    } 
} 
/** 
Get Set Width 

- parameter width: CGFloat 
by DaRk-_-D0G 
*/ 
var width:CGFloat { 
    get { 
     return self.frame.size.width 
    } 
    set { 
     self.frame.size.width = newValue 
    } 
} 

使用说明(继承了的UIView)

inheritsOfUIView.height = 100 
button.height = 100 
print(view.height) 
+0

不可能在没有a的情况下设置宽度等等初始化只是一个get属性! – BilalReffas 2016-01-05 15:50:08

15

Swift 3和SWIFT 4:

myView.frame = CGRect(x: 0, y: 0, width: 0, height: 0) 
20

这可以以各种方法在夫特3来实现的。0曾参与开发的最新版本月 - 2017年

直接分配的高度&宽度值一个观点:

userView.frame.size.height = 0 

userView.frame.size.width = 10 

分配的CGRect的框架

userView.frame = CGRect(x:0, y: 0, width:0, height:0) 

方法详情:

的CGRect(X:X点,Y:查看的宽度,高度:Y,宽度的点 高度视图的)

使用分机方法的CGRect

添加下列任何快捷文件扩展名代码,

extension CGRect { 

    init(_ x:CGFloat, _ y:CGFloat, _ w:CGFloat, _ h:CGFloat) { 

     self.init(x:x, y:y, width:w, height:h) 
    } 
} 

使用以下代码在应用程序中设置大小的视图的任何位置参数

userView.frame = CGRect(1, 1, 20, 45) 
0

可以在界面生成器做到这一点:

1)从一个帧视图控制键(例如questionFrame)到主视图,在弹出窗口中选择“等高”。 2)然后转到框架的尺寸检查器,单击编辑“等高到超视图”约束条件,将乘数设置为0.7并返回。

您会看到约束条件已从“等于高度...”变为“按比例高度...”。