gpt4 book ai didi

ios - AutoLayout 和 UILabel 调整大小动画在设备旋转时无法正常工作

转载 作者:技术小花猫 更新时间:2023-10-29 11:08:11 26 4
gpt4 key购买 nike

我在一个非常简单的任务上遇到了一个奇怪的问题。

我需要一个非常小的设置来重现问题:

|--------------------------------------|
| Parent View |
| |
||------------------------------------||
|| UILabel ||
||------------------------------------||
| |
| |
||------------------------------------||
|| UIView ||
||------------------------------------||
| |
| |
|--------------------------------------|

在上面的示例中,我们有一个带有 2 个 subview 的父 View --> 一个 UILabel 和一个简单的 UIView。我正在使用自动布局来应用上面显示的布局:

Constraints for UILabel:
Leading Space to superview = 0
Trailing Space to superview = 0
Fixed Height constraint (e.g. 80pt)
Top Space constraint (e.g. 50pt)

The UIView subview has the same constraint types (the values for height and top space differs).

所以我对这个设置的期望是,两个 subview 都将采用其父 View 的完整宽度,因为我们定义前导和尾随空格应为零。所以如果改变父 View 的宽度, subview 的宽度也应该改变,以保持对齐。

假设父 View 的尺寸为 200x400 pt。当我构建并运行我的纵向示例时,一切看起来都很好。当我旋转到横向时,一切看起来都还不错。父 View 宽度甚至 subview 宽度变大了。但是现在当我旋转回纵向时,uilabels 宽度立即获得其目标宽度而没有任何动画:

|--------------------------------------|
| Parent View |
| |
| (immediately has target size) |
| |--------------| |
| | UILabel | |
| |--------------| |
| |
| (this subview is still |
| animating its width) |
| |------------------------------| |
|-->| UIView |<--|
| |------------------------------| |
| |
| |
|--------------------------------------|

父 View 宽度和 uiview subview 宽度动画正确。只有 uilabel 在这里有奇怪的行为,我无法找出导致该问题的原因。

最佳答案

我的建议是:

如果您对父 View 进行了子类化,请使用 - (void)layoutSubviews:

- (void)layoutSubviews {
label.frame = CGRectMake(leftInset, labelY, parentView.frame.size.width - leftInset*2, labelHeight);
childView.frame = CGRectMake(leftInset, childViewY, parentView.frame.size.width - leftInset*2, childHeight);
}

如果您没有子类化父 View ,您可以使用 autoresizingMask:

label.autoresizingMask = UIViewAutoresizingFlexibleWidth;
childView.autoresizingMask = UIViewAutoresizingFlexibleWidth;

关于ios - AutoLayout 和 UILabel 调整大小动画在设备旋转时无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17022804/

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