gpt4 book ai didi

ios - AutoLayout以编程方式导致iPhone 4中出现问题

转载 作者:行者123 更新时间:2023-12-01 18:50:20 24 4
gpt4 key购买 nike

我正在学习通过代码自动布局。为了我的学习目的,我正在使用自动版式制作示例应用程序。在我的示例应用程序中,我决定将文本字段的上边距保持在20点以下。这是代码

#import "SampleViewController.h"
@interface SampleViewController (){
UITextField *username;
}
@end
@implementation SampleViewController

- (void)viewDidLoad {
[super viewDidLoad];
self.edgesForExtendedLayout = UIRectEdgeNone;
[self prepareViews];
}

-(void)prepareViews{
username = [[UITextField alloc]init];
username.placeholder = @"Username";
[username setBorderStyle:UITextBorderStyleRoundedRect];
username.translatesAutoresizingMaskIntoConstraints = NO;

[self.view addSubview:username];
[self prepareConstraint];
}
-(void)prepareConstraint{
NSLayoutConstraint *constraint = [NSLayoutConstraint
constraintWithItem:username
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeCenterX
multiplier:1.0
constant:0];
[self.view addConstraint:constraint];

constraint = [NSLayoutConstraint
constraintWithItem:username
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:250];
[self.view addConstraint:constraint];

constraint = [NSLayoutConstraint
constraintWithItem:username
attribute:NSLayoutAttributeTopMargin
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeTopMargin
multiplier:1.0
constant:20];
[self.view addConstraint:constraint];
}
@end

当我在iPhone 4(iOS 7.1)上运行此代码时,我得到了这样的输出

然后,当我在iPhone 5S(iOS 8.4)上运行此代码时,我得到了这样的输出


伙计们,我不知道我在哪里犯错。请指出我在哪里犯错。当我在iPhone 4(iOS 7.1)上运行此代码时,我得到了这个警告。

无法同时满足约束条件。大概至少一个
以下列表中的约束之一是您不想要的约束。尝试
这:(1)查看每个约束,并尝试找出哪个约束
没想到(2)找到添加了不必要约束的代码或
约束并修复它。 (注意:如果您看到
您不了解的NSAutoresizingMaskLayoutConstraints,请参阅
到UIView属性的文档
平移AutoresizingMaskIntoConstraints)(
”)

将尝试通过打破约束来恢复
(名称:'|':UIView:0x14d9b480)>

中断objc_exception_throw以在调试器中捕获此错误。的
UIView上的UIConstraintBasedLayoutDebugging类别中的方法
中列出的内容也可能会有所帮助。

最佳答案

这是在4s和5s中测试的。...您只需添加宽度约束即可查看,而不是应将其应用于文本字段...

NSLayoutConstraint *constraint = [NSLayoutConstraint
constraintWithItem:username
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeCenterX
multiplier:1.0
constant:0];
[self.view addConstraint:constraint];

constraint = [NSLayoutConstraint
constraintWithItem:username
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:250];
[username addConstraint:constraint];

constraint = [NSLayoutConstraint
constraintWithItem:username
attribute:NSLayoutAttributeTopMargin
relatedBy:NSLayoutRelationEqual
toItem:self.topLayoutGuide
attribute:NSLayoutAttributeBottom
multiplier:1.0
constant:20];
[self.view addConstraint:constraint];

关于ios - AutoLayout以编程方式导致iPhone 4中出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31488258/

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