gpt4 book ai didi

Objective-C setFrame Swift 等效项

转载 作者:搜寻专家 更新时间:2023-10-30 22:34:31 25 4
gpt4 key购买 nike

我有一个正在重构的 Objective-C 项目,我遇到了一行我无法翻译的内容,而且 Apple 的文档站点似乎已关闭:

[self.stepperView setFrame:self.stepperView.frame];

我已经试过了:

    self.stepperView.frame = stepperView.frame

但是 View 仍然绘制在错误的位置。有谁知道 Swift 中的 setFrame 等价物?

我试着查看 Apple's documentation , 但该网站似乎已关闭:

enter image description here

最佳答案

setFrameframe 在 Objective-C 和 Swift 中是等价的。

在 Objective-C 中,setFrame 是为属性生成的 setter 方法。您还可以执行(在 Objective-C 中)view.frame = someFrame,这与调用 setFrame: 100% 相同,这只是您喜欢哪种语法的问题。

在 Swift 中,所有 setVariable: 方法名称都替换为 view.frame = ... 的点语法等效项。

至于为什么你的 View 被绘制在错误的位置,你必须发布一个具体的例子来说明你是如何放置你的 View 的。这很可能是数学或计算错误。还值得注意的是,与典型的笛卡尔坐标不同,iOS 坐标布局的 y 值会随着向下而增加。

我还注意到,在您的屏幕截图的其中一个选项卡中,您搜索了“无法在 viewDidLoad 之前设置框架”。 viewDidLoad 是设置任何帧值的错误位置。根据文档:

This method is called after the view controller has loaded its view hierarchy into memory. This method is called regardless of whether the view hierarchy was loaded from a nib file or created programmatically in the loadView method. You usually override this method to perform additional initialization on views that were loaded from nib files.

这意味着 viewDidLoad 是状态、变量等初始化的地方,但不是布局的地方,因为它极有可能介于 viewDidLoad 之间viewDidAppear 表示,您无法控制的其他事情正在重新定位您的 View 。最有可能的罪魁祸首是 View 边界更改和调整所有 subview 。

关于Objective-C setFrame Swift 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33771452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com