Ios 为什么可以';我是否更改视图';Swift的帧大小是多少?
这是我遇到的最奇怪的事情 我在Ios 为什么可以';我是否更改视图';Swift的帧大小是多少?,ios,swift,uiview,frame,Ios,Swift,Uiview,Frame,这是我遇到的最奇怪的事情 我在UIViewController上的UIView上添加了一个简单的UIView。我将大小更改为200 x 200,然后我想通过将这行代码放在viewDidLoad方法中来更改UIView的大小: self.gameBackgroundView.frame.size.height = 10 这在斯威夫特看来很正常。不过,什么也没发生。我可以改变颜色,角半径等 编辑: 我还删除了该视图中的所有约束,但它仍然不起作用。这是因为自动布局,但是,您可以在自动布局完成其工作后
UIViewController
上的UIView
上添加了一个简单的UIView
。我将大小更改为200 x 200,然后我想通过将这行代码放在viewDidLoad
方法中来更改UIView
的大小:
self.gameBackgroundView.frame.size.height = 10
这在斯威夫特看来很正常。不过,什么也没发生。我可以改变颜色,角半径等
编辑:
我还删除了该视图中的所有约束,但它仍然不起作用。这是因为自动布局,但是,您可以在自动布局完成其工作后执行,或者更改其约束。将其设置为
视图中的帧(
)。它应该会起作用
我希望这对您有所帮助。好的,所以我在堆栈上找到了一个解决方案
正确的答案是:
我需要创建一个高度约束的IBOutlet
相应地更改该约束的值
谢谢大家! 试试这段代码,它可以在任何设备上运行
let BackImage = UIImage(named: "backGrndImg@2x.png")!
var imageView: UIImageView!
override func loadView() {
super.loadView()
self.imageView = UIImageView(frame: CGRectZero)
self.imageView.contentMode = .ScaleAspectFill
self.imageView.image = BackImage
self.view.insertSubview(imageView, atIndex: 0)
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
self.imageView.frame = self.view.bounds
}
在“自动布局”中更改框架将没有帮助,一旦调用布局子视图,框架将重置。我没有在这个视图上设置任何约束,但是我在上面有另一个视图,但是我不认为这与它有任何关系。我记得在Obj-C中,您必须更改整个框架属性才能更新视图。另一件事是,如果设置了自动布局约束,它将忽略帧更改。但我在另一个UIView上设置了4个约束,这是否适用于我的另一个UIView?为什么我要更改哪个帧?能否演示如何创建视图并将其添加为子视图?我打开故事板,将新UIView拖到UIViewController顶部,更改背景颜色,以便我可以看到帧的更改,并且我在相应的类文件中创建了一个IBOutlet如果您不在InterfaceBuilder中设置约束,一些将自动添加。查看gameViewBuilder.constraints
。还要确保gameViewBuilder.translatesAutoResizengMasktoConstraints
为真。