gpt4 book ai didi

iOS:带有 subview Controller 的自动布局

转载 作者:行者123 更新时间:2023-12-01 17:41:34 25 4
gpt4 key购买 nike

我已经使用自动布局几个星期了。
目前,我正在使用一个名为 FLKAutoLayout 的第 3 方库,它使该过程更容易。
我现在可以按照我想要的方式构建 View ,通常没有问题。
然而,在过去 4 天的工作中,一旦涉及到 View Controller ,我一直在努力解决自动布局问题。
我对各种 UIViews 都很好......但由于某种原因,每个 viewcontroller.view 都是一个恶魔。
除了让 viewcontroller.view 按照我想要的方式调整大小之外,我什么都没有,而且更深层次的问题是子 viewcontroller 的 UIView 在使用自动布局时无法正确接收事件。
手动指定框架时,​​ subview Controller 工作得很好,但是自动布局会破坏一切。

我不明白 viewcontroller 的 UIView 有什么不同,使它与其他所有不同......我的心在沮丧中融化。 ios 是否在幕后弄乱了我的 View Controller View 或其他什么?

sample image

在图像中,红色区域属于 subview Controller 。该区域不应超过最底部的 subview (显示三个的卡片)。这应该很容易,我可以让它与一堆普通的 UIView 一起正常工作,但是因为这是一个 View Controller ,所以一切都中断了......

任何人都可以阐明它是什么我不知道。非常感谢有关潜在问题的任何线索。

谢谢阅读。

更新:问题可能与不明确的约束有关

UIView *box = [[UIView alloc]init];
[box addSubview:imageView];
[box addSubview:nameLabel];

imageView constrainWidth:@"32" height:@"32"];
[imageView alignTop:@">=0" leading:@"0" bottom:@"<=0" trailing:@"<=0" toView:box];
[imageView alignCenterYWithView:box predicate:@"0"];

[nameLabel constrainLeadingSpaceToView:imageView predicate:@"5"];
[nameLabel alignTop:@">=0" leading:@">=0" bottom:@"<=0" trailing:@"<=0" toView:box];
[nameLabel alignCenterYWithView:box predicate:@"0"];

[self addSubview:box];
[box alignTop:@"5" leading:@"5" bottom:@"-5" trailing:@"-5" toView:self];

上面的示例是一个模棱两可的布局,但我无法弄清楚它有什么问题......

最佳答案

这可能应该是一条评论,但评论对于代码来说很糟糕。 ;-)

您是否检查了模棱两可的约束?对我来说,这种观点看起来可能是由模棱两可的约束引起的。

将此代码添加到您的应用委托(delegate)中:

// before @implementation AppDelegate
@interface UIWindow (AutoLayoutDebug)
+ (UIWindow *)keyWindow;
- (NSString *)_autolayoutTrace;
@end

// inside of @implementation

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
NSString *autolayoutTrace = [[UIWindow keyWindow] _autolayoutTrace];
if ([autolayoutTrace rangeOfString:@"AMBIGUOUS"].location != NSNotFound) {
NSLog(@"%@", autolayoutTrace);
}
else {
NSLog(@"No Ambiguous autolayout found");
}
}

现在摇动你的模拟器。您会在硬件菜单中找到摇动手势。

如果它没有显示“未找到不明确的自动布局”,请检查打印的跟踪中不明确的 ui 元素。它们标有“模棱两可”。

然后开始添加约束,这样就不会再有歧义了。

您可以调用 exerciseAmbiguityInLayout在具有不明确布局的 UI 元素上,以获取缺少哪些约束的提示。

并确保删除您发货产品中的调试代码。您可以将这两个部分放在 #if DEBUG 中。和 #endif

关于iOS:带有 subview Controller 的自动布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17582208/

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