我使用的是Swift iOS 8.0。我有一个UIViewController的UI设置,我使用Xcode 6.1.1中的Interface builder创建了它。
现在让我们来看看顶级子UIView(我将其称为SubView1)。它里面有一个UIImageView。我想以编程方式做两件事(我不想使用AutoLayout):
目前我有以下代码试图这样做(这还没有被重构):
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
var mainViewWidth = self.view.bounds.width
var mainViewHeight = self.view.bounds.height
// calculate new size for subView
var subViewHeight : CGFloat = mainViewHeight / 4
var subViewWidth : CGFloat = mainViewWidth
var nextXPosn : CGFloat = 0
var nextYPosn : CGFloat = 0
// change frame size for SubView1
self.subView1.frame = CGRect(x: nextXPosn, y: nextYPosn, width: subViewWidth, height: subViewHeight)
var originalSubViewHeight : CGFloat = originalMainViewHeight / 4.0
var scaleFactor : CGFloat = subViewHeight / originalSubViewHeight
// calculate new height and width for image
var newHeight : CGFloat = subImage.bounds.height * scaleFactor
var newWidth : CGFloat = subImage.bounds.width * scaleFactor
// change frame size and position for image
self.subImage.frame = CGRect(x: 10, y: 10, width: newWidth, height: newHeight)
}
请注意,我对x和y位置使用了任意值。当此代码执行时,subImage或subView1的大小或位置都不会更改。我有没有设置允许这些视图改变位置和大小的东西?为什么没有变化?
注意:我刚试过的是删除更改subView1
大小的行self.subView1.frame = CGRect(x: nextXPosn, y: nextYPosn, width: subViewWidth, height:
subViewHeight)
现在subImage的大小和位置发生了变化。看起来好像通过移动和改变subView1的大小,它可以防止改变subImage(它的子视图)的大小和位置。我不确定为什么会这样。
答案 0 :(得分:0)
尝试
self.subView1.frame = CGRectMake(x: nextXPosn, y: nextYPosn, width: subViewWidth, height: subViewHeight)
您使用的是CGRect,而不是使用CGRectMake。