有没有一种编程方式可以以编程的方式更新框架(Swift)?

8

是否可以像在接口构建器中一样以编程方式更新框架?由于动画(我想我会修复它..)导致我的一些对象错位,但这也引发了上述问题

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

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

@IBAction func optionsButtonPushed(sender: AnyObject) {

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

我正在浏览的视图中(高度为零),按钮因动画而消失,所以可能有比我想到的更好的方法。(抱歉这个问题很疯狂; 这是我的第一个问题!)


Rachel,这是一个不适合在StackOverflow上提出的问题。你没有展示出你尝试过什么,哪些方法不起作用,以及你做了哪些研究。 - Léo Natan
1
欢迎来到[so]!您的问题需要更多细节...是哪种框架?UIView框架?还是Game/Scene Kit框架,或者其他的? - Michael Dautermann
2个回答

10
你可以在Storyboard中禁用自动布局。如果你仍然想使用AutoLayout,请使用-viewDidLayoutSubviews方法。
self.yourButton.translatesAutoresizingMaskIntoConstraints = YES;

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

yourButton.translatesAutoresizingMaskIntoConstraints = true 是我一开始将其设置为 false 后寻找的内容。 - Lance Samaria

2

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

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

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

UIView 文档


请使用CGRectMake(x: 0, y: 0, width: 100, height: 100),而不是CGRect()。 - Matthieu
1
CGRect(x:0, y:0, width:100, height:100) 是正确的。这个初始化器是在CGRect扩展中定义的。 - Tim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接