有没有办法以编程方式更新帧 (Swift)

Is there a way to programmatically update frames (Swift)

是否可以像在界面生成器中那样以编程方式更新框架?我的一些对象因为动画而放错了位置(我想无论如何我都想修复它......)但它让我想起了上述问题

编辑:我进行了一些谷歌搜索并查看了 Whosebug,但没有找到我要找的东西。 我想将某些按钮的框架更新回我在界面构建器中设置的约束。 抱歉,如果这个问题太简单了,但我只是在寻找一个简单的答案:是或否 + 代码行或调用方法。它甚至可能不会出现在我的最终项目中;我只是好奇。

这是一些代码,因为我想这会有所帮助:

@IBAction func optionsButtonPushed(sender: AnyObject) {

    UIView.animateWithDuration(2, animations: {
        var theFrame = self.optionsMenu.frame
        theFrame.size.height += 100
        self.optionsMenu.frame  = theFrame
    })
}

位于我正在滚动的视图中的按钮(从零高度)消失了,我猜是因为动画,所以可能有比我想的更好的方法 (抱歉,这个问题太疯狂了;这是我的第一个问题!)

UIView 有一个名为 frame 的 属性,其类型为 CGRectCGRect 是一个结构。

您可以通过创建新的 CGRect 并将其分配给 属性 来更新它。

CGRect newFrame = CGRect(x:0, y:0, width:100, height:100)
yourView.frame = newFrame

UIView Documentation

您可以禁用自动布局。从故事板。如果您仍想使用 AutoLayout,请使用 -viewDidLayoutSubviews 方法。

self.yourButton.translatesAutoresizingMaskIntoConstraints = YES;

self.yourButton.frame = CGRectMake(16, 133, 130, 130);