gpt4 book ai didi

ios - 在代码中创建这些约束,需要建议

转载 作者:行者123 更新时间:2023-11-29 03:22:27 25 4
gpt4 key购买 nike

因此,我在理解如何创建界面构建器为我创建的相同约束时遇到了极大的困难。

The situation

Constraints

我一直在阅读苹果开发者网站上的文档并尝试遵循它,但我似乎无法完成这些工作。我正在创建一个自定义 View Controller ,它添加一个 subview 并在新 View 被插入时为该新 View 创建相同的约束。(底部约束是新 View 被插入的地方,顶 View 总是相同的)我在下面写了这个代码,但它似乎无法正常工作(例如,当我模拟通话状态栏时, View 不像 IB 创建约束的初始 View 那样运行)

我的代码:

QVViewController * __weak vc1 = (QVViewController*)self.rootViewController2.parentViewController;
UIView *viewToBePushed = tempV.view;
UIView *topContainerView = self.rootViewController1.view;
id bottomLayoutGuide = tempV.bottomLayoutGuide;


[vc1.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[viewToBePushed]-0-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(viewToBePushed)]];
[vc1.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[topContainerView]-0-[viewToBePushed]" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(viewToBePushed,topContainerView)]];
[vc1.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-138-[viewToBePushed]" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(viewToBePushed)]];
[vc1.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[viewToBePushed]|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(viewToBePushed)]];
[vc1.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[viewToBePushed]" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(viewToBePushed)]];
[vc1.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[bottomLayoutGuide]-0-[viewToBePushed]" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(viewToBePushed, bottomLayoutGuide)]];

基本上

viewToBePushed代表图中最下面的容器topContainerView代表图中最上面的容器vc1 是这两个容器所在的 View

我希望我把情况解释得足够清楚,如果没有,请问我会尽量详细说明。我将非常感谢您的帮助,因为这些限制因素正在偷走我的良好 sleep ,我非常想编写易于维护的代码。

那么谁能告诉我如何在代码中正确创建这些约束。

最佳答案

鉴于您的设置,我认为底部容器 View 应该具有您需要的任何约束,但永远不需要更改它们。当您切换到嵌入该容器 View 中的新 Controller 时,您可以只对该容器的所有边设置约束(在将 viewThatWasPushed 添加为 subview 之后)

[self.bottomContainerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[viewThatWasPushed]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(viewThatWasPushed)]];
[self.bottomContainerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[viewThatWasPushed]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(viewThatWasPushed)]];

self.bottomContainerView 是 theta 底部 View 的 IBOutlet。

关于ios - 在代码中创建这些约束,需要建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20916266/

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