(没有逐字逐词翻译,希望能够理解,如果有不对的,恳请指正)
UIKit
Note
注意
When linking against iOS 8.3, any code that relies on layout information (such as the frame) of a UIButton
subview
when the button is not in the window hierarchy will need to send layoutIfNeeded
to
the button before retrieving layout information (such as button.titleLabel.frame
) to ensure that the
layout values are up to date.
在iOS8.3下编译链接的时候,如果UIButton(包括子类)不是窗口级别的控件,任何涉及获取和操作UIButton(包括子类)布局信息的代码,都应该先发送一个layoutIfNeeded事件(其实就是执行UIButton的layoutIfNeed方法),以确保获取到的UIButton的布局信息是最新的。
For example, if you had something like this:
举例如下,如果iOS8.3以前,你这样写代码:
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]; |
// code that sets up the button, but doesn’t yet add it to a window |
CGRect titleFrame = button.titleLabel.frame; |
// code that relies on the correct value for titleFrame |
You now need:
那么,现在你需要这样写代码:
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]; |
// code that sets up the button, but doesn’t yet add it to a window |
[button layoutIfNeeded]; // This is also safe pre-iOS 8.3 |
CGRect titleFrame = button.titleLabel.frame; |
// code that relies on the correct value for titleFrame |
时间: 2024-10-09 12:25:07