Ios 如何在不修改其余约束的情况下在视图控制器上插入图元?

Ios 如何在不修改其余约束的情况下在视图控制器上插入图元?,ios,swift,Ios,Swift,我正面临一个让我浪费很多时间的问题。每次我在视图控制器上插入一个元素时(例如UITextField,UIButton,等等)我已经为视图控制器上的其余元素设置了约束,我必须删除所有约束并添加新的约束,因为新元素破坏了元素屏幕位置的结构(它也修改了所有约束) 每次我必须在我的Swift应用程序的屏幕上更改某些内容时,我都会花费大量时间,因为每次修改某些内容时,我都必须再次添加所有约束 有没有一种方法可以让我插入一个元素而忽略其余的元素,然后根据屏幕上的一个或多个元素定位这个新元素?或者,在我正确设

我正面临一个让我浪费很多时间的问题。每次我在
视图控制器上插入一个元素时(例如
UITextField
UIButton
,等等)我已经为
视图控制器上的其余元素设置了约束,我必须删除所有约束并添加新的约束,因为新元素破坏了元素屏幕位置的结构(它也修改了所有约束)

每次我必须在我的
Swift
应用程序的屏幕上更改某些内容时,我都会花费大量时间,因为每次修改某些内容时,我都必须再次添加所有约束

有没有一种方法可以让我插入一个元素而忽略其余的元素,然后根据屏幕上的一个或多个元素定位这个新元素?或者,在我正确设置新元素之前,约束将忽略新元素?或者类似的解决方法

p.S:根据评论,由于我的问题似乎不是很清楚,我将补充一些额外的信息:

  • 我在设计应用程序时尝试插入新元素
  • 我正在使用
    Main.storyboard
    文件插入新元素
  • 我将元素拖动到
    视图控制器中
  • 我正在使用
    XCode

提前谢谢

您仍然可以让Xcode为您创建约束,它在大多数情况下都可以正常工作。只需在菜单中选择:

Editor > Resolve AutoLayout Issues > Reset to suggested constraints
完成此操作后,您仍然可以更改一些约束以满足您的需要


通常,将所有视图放置在控制器中,并仅在最后设置约束


因为,堆栈视图是一种很好的应用程序布局方式,而且苹果公司非常鼓励使用它。

您仍然可以让Xcode为您创建约束,它在大多数情况下都可以正常工作。只需在菜单中选择:

Editor > Resolve AutoLayout Issues > Reset to suggested constraints
完成此操作后,您仍然可以更改一些约束以满足您的需要


通常,将所有视图放置在控制器中,并仅在最后设置约束


正如苹果公司所大力提倡的那样,堆栈视图是一种很好的应用程序布局方式。

您必须用代码设置约束,以便对视图中的所有元素进行精确定位。这是一个例子:

1) 对于名为usernamelab的标签:

userNameLabel.leftAnchor.constraintEqualToAnchor(imageView.rightAnchor, constant: 10).active = true
                userNameLabel.topAnchor.constraintEqualToAnchor(self.topAnchor, constant: 50).active = true
                userNameLabel.widthAnchor.constraintEqualToConstant(220).active = true
                userNameLabel.heightAnchor.constraintEqualToConstant(30).active = true
albumNameLabel.widthAnchor.constraintEqualToConstant(220).active = true
                albumNameLabel.heightAnchor.constraintEqualToConstant(30).active = true
                albumNameLabel.topAnchor.constraintEqualToAnchor(userNameLabel.bottomAnchor, constant: 5).active = true
                albumNameLabel.leftAnchor.constraintEqualToAnchor(imageView.leftAnchor, constant: 10).active = true
2) 对于另一个名为albumNameLabel的标签:

userNameLabel.leftAnchor.constraintEqualToAnchor(imageView.rightAnchor, constant: 10).active = true
                userNameLabel.topAnchor.constraintEqualToAnchor(self.topAnchor, constant: 50).active = true
                userNameLabel.widthAnchor.constraintEqualToConstant(220).active = true
                userNameLabel.heightAnchor.constraintEqualToConstant(30).active = true
albumNameLabel.widthAnchor.constraintEqualToConstant(220).active = true
                albumNameLabel.heightAnchor.constraintEqualToConstant(30).active = true
                albumNameLabel.topAnchor.constraintEqualToAnchor(userNameLabel.bottomAnchor, constant: 5).active = true
                albumNameLabel.leftAnchor.constraintEqualToAnchor(imageView.leftAnchor, constant: 10).active = true
3) 在设置约束之前,请记住这一点:

self.addSubview(userNameLabel)
self.addSubview(albumNameLabel)

并以这种方式继续查看视图中的所有元素。

您必须使用代码设置约束,以便为视图中的所有元素提供精确的位置。这是一个例子:

1) 对于名为usernamelab的标签:

userNameLabel.leftAnchor.constraintEqualToAnchor(imageView.rightAnchor, constant: 10).active = true
                userNameLabel.topAnchor.constraintEqualToAnchor(self.topAnchor, constant: 50).active = true
                userNameLabel.widthAnchor.constraintEqualToConstant(220).active = true
                userNameLabel.heightAnchor.constraintEqualToConstant(30).active = true
albumNameLabel.widthAnchor.constraintEqualToConstant(220).active = true
                albumNameLabel.heightAnchor.constraintEqualToConstant(30).active = true
                albumNameLabel.topAnchor.constraintEqualToAnchor(userNameLabel.bottomAnchor, constant: 5).active = true
                albumNameLabel.leftAnchor.constraintEqualToAnchor(imageView.leftAnchor, constant: 10).active = true
2) 对于另一个名为albumNameLabel的标签:

userNameLabel.leftAnchor.constraintEqualToAnchor(imageView.rightAnchor, constant: 10).active = true
                userNameLabel.topAnchor.constraintEqualToAnchor(self.topAnchor, constant: 50).active = true
                userNameLabel.widthAnchor.constraintEqualToConstant(220).active = true
                userNameLabel.heightAnchor.constraintEqualToConstant(30).active = true
albumNameLabel.widthAnchor.constraintEqualToConstant(220).active = true
                albumNameLabel.heightAnchor.constraintEqualToConstant(30).active = true
                albumNameLabel.topAnchor.constraintEqualToAnchor(userNameLabel.bottomAnchor, constant: 5).active = true
                albumNameLabel.leftAnchor.constraintEqualToAnchor(imageView.leftAnchor, constant: 10).active = true
3) 在设置约束之前,请记住这一点:

self.addSubview(userNameLabel)
self.addSubview(albumNameLabel)

然后以这种方式访问视图中的所有元素。

您使用的是interface builder吗?但我们讨论的是在应用程序启动并运行时在ViewController中插入视图吗?还是设计师?我不清楚(我想答案是第一个)@Aaron我正在使用XCode,如果这是你的意思的话。@ddb当我设计它的时候。我应该补充更多关于这个问题的信息吗?什么与其他人相关?如何在VC中插入视图?我们谈论的是故事板或xib?您使用的是interface builder吗?但我们谈论的是在应用程序启动并运行时在ViewController中插入视图吗?还是设计师?我不清楚(我想答案是第一个)@Aaron我正在使用XCode,如果这是你的意思的话。@ddb当我设计它的时候。我应该补充更多关于这个问题的信息吗?什么与其他人相关?如何在VC中插入视图?我们谈论的是故事板还是xib?