gpt4 book ai didi

ios - iOS 自动布局界面约束何时执行?

转载 作者:行者123 更新时间:2023-11-29 02:28:45 25 4
gpt4 key购买 nike

在我看来,调用 viewDidAppear 和执行界面元素的约束之间似乎存在延迟。

我有一个 UILabel ,其大小根据其内容而变化。如果我在 viewDidAppear 中检查其约束,它们是空的。如果我等待 500 毫秒(例如),然后再次检查,约束就如我所期望的那样存在。 UILabel 的边界也是如此,不会立即使用,然后,一旦约束生效,它们就会按照我的预期进行设置。

我的代码:

- (void) viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];

// Get constraints and bounds
NSLog(@"description constraints a %@", [descriptionLabel constraints]);
NSLog(@"description bounds a %@", NSStringFromCGRect([descriptionLabel bounds]));

// Wait a bit, then get constraints
double delayInSeconds = 0.5;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void) {
NSLog(@"description constraints b %@", [descriptionLabel constraints]);
NSLog(@"description bounds b %@", NSStringFromCGRect([descriptionLabel bounds]));
});
}

以及该代码的输出:

10:39:35.949 Abc[2550:949660 constraints a (
)
10:39:35.950 Abc[2550:949660 bounds a {{0, 0}, {42, 21}}

10:39:36.480 Abc[2550:949660 constraints b (
"<NSContentSizeLayoutConstraint:0x175c0310 H:[UILabel:0x176d5080'elit ipsum amet ut cillum...'(290)] Hug:251 CompressionResistance:750>",
"<NSContentSizeLayoutConstraint:0x175c0350 V:[UILabel:0x176d5080'elit ipsum amet ut cillum...'(629)] Hug:251 CompressionResistance:750>"
)
10:39:36.482 Abc[2550:949660] description bounds b {{0, 0}, {290, 629}}

{42, 21} 来自 Interface Builder,并且是任意的,因为约束会根据内容的要求更改大小。

我使用的是 Xcode 6.1,面向 iOS 7.1,在运行 iOS 8.1 的 iPod Touch 上运行该应用。

最佳答案

-(void)viewDidLayoutSubviews

用于 View Controller 和

-(void)layoutSubviews

通话后

[super layoutSubviews];

查看次数。

关于ios - iOS 自动布局界面约束何时执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27169049/

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