当前位置: 首页 > 知识库问答 >
问题:

NSLayoutConstraints到UITextField-错误

蒋曾笑
2023-03-14

我有一个带有3个视图的简单设置:

视图,它有一个子视图内容视图,它有一个子视图电子邮件字段(一个UITextField)。

emailfField未正确对齐centerY。我得到的是这个错误:

"<NSLayoutConstraint:0x9e7d500 UIView:0x9e85c30.centerY == UITextField:0x9e4dbd0.centerY>",
"<NSLayoutConstraint:0x9e7cc00 UIView:0x9e85530.top == UIView:0x9e85c30.top>",
"<NSAutoresizingMaskLayoutConstraint:0x9e7f950 h=--& v=--& UITextField:0x9e4dbd0.midY == + 282.5>",
"<NSAutoresizingMaskLayoutConstraint:0x9e81e90 h=--& v=--& UIView:0x9e85c30.midY == + 240>")

我的m文件:

- (void)viewDidLoad {
[super viewDidLoad];

[self initContentView];
[self initFirstView];
[self addConstraints];}

- (void)addConstraints {
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.contentView
                                                      attribute:NSLayoutAttributeLeading
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:self.view
                                                      attribute:NSLayoutAttributeLeading
                                                     multiplier:1.0
                                                       constant:0.0]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.contentView
                                                      attribute:NSLayoutAttributeTop
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:self.view
                                                      attribute:NSLayoutAttributeTop
                                                     multiplier:1.0
                                                       constant:0.0]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.contentView
                                                      attribute:NSLayoutAttributeTrailing
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:self.view
                                                      attribute:NSLayoutAttributeTrailing
                                                     multiplier:1.0
                                                       constant:0.0]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.contentView
                                                      attribute:NSLayoutAttributeBottom
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:self.view
                                                      attribute:NSLayoutAttributeBottom
                                                     multiplier:1.0
                                                       constant:0.0]];

//First View
//Email Field
[self.contentView addConstraint:[NSLayoutConstraint constraintWithItem:self.emailField
                                                      attribute:NSLayoutAttributeCenterY
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:self.contentView
                                                      attribute:NSLayoutAttributeCenterY
                                                     multiplier:1.0
                                                       constant:0.0]];}

- (void)initContentView {
self.view.backgroundColor = [UIColor colorWithRed:239.0f/255.0f green:239.0f/255.0f blue:239.0f/255.0f alpha:1.0];

self.contentView = [[UIView alloc] initWithFrame:self.view.frame];
self.contentView.backgroundColor = [UIColor clearColor];
[self.view addSubview:self.contentView];

int frameHorizontalCenter = self.contentView.frame.size.width/2;
self.funView = [[UIImageView alloc] initWithFrame:CGRectMake(frameHorizontalCenter-50, 100, 100, 100)];
self.funView.backgroundColor = [UIColor clearColor];
self.funView.image = [UIImage imageNamed:@"dog1"];
[self.contentView addSubview:self.funView];

self.descriptionLabel = [[UILabel alloc] initWithFrame:CGRectMake(frameHorizontalCenter - 140, self.funView.frame.origin.y + self.funView.frame.size.height, 280, 60)];
self.descriptionLabel.font = [UIFont systemFontOfSize:14];
self.descriptionLabel.textColor = [UIColor colorWithRed:63.0f/255.0f green:63.0f/255.0f blue:63.0f/255.0f alpha:1.0];
self.descriptionLabel.backgroundColor = [UIColor clearColor];
self.descriptionLabel.highlightedTextColor = [UIColor whiteColor];
self.descriptionLabel.lineBreakMode = NSLineBreakByWordWrapping;
self.descriptionLabel.numberOfLines = 2;
self.descriptionLabel.adjustsFontSizeToFitWidth = YES;
self.descriptionLabel.textAlignment = NSTextAlignmentCenter;
[self.contentView addSubview:self.descriptionLabel];

self.emailField = [[UITextField alloc] initWithFrame:CGRectMake(frameHorizontalCenter -140, self.descriptionLabel.frame.origin.y + self.descriptionLabel.frame.size.height, 280, 45)];
self.emailField.borderStyle = UITextBorderStyleNone;
self.emailField.textColor = [UIColor colorWithRed:63.0f/255.0f green:63.0f/255.0f blue:63.0f/255.0f alpha:1.0];
self.emailField.backgroundColor = [UIColor whiteColor];
self.emailField.placeholder = @"Epasts";
[self.contentView addSubview:self.emailField];}

真不明白怎么了,约束不是设置正确了吗?

共有1个答案

太叔鹏云
2023-03-14

使用SetTranslatesAutoResizengMaskintoConstraints(设置TranslatesAutoResizengMaskintoConstraints):关闭自动调整大小掩码到内容视图和电子邮件字段上约束的转换。向电子邮件字段添加其他约束,以指定应使用的位置、宽度和高度。

 类似资料:
  • UITextField-Shake 是 UITextField 类添加了一个震动的动画,就像 OSX 登录界面的密码字段。

  • 在NSLayoutConstraint之前的时间里,这是可能的,因为保留了NSWindow的大小和状态—正在寻找一种优雅的方法来实现这一点 有没有办法在应用程序退出时保存,并在启动时再次恢复它们?

  • 我对iOS布局约束的机制有误解。请参阅下面列出的我放在viewDidLoad中的代码。 在我看来,我的意图是明确的。我想在设备屏幕的中央看到一个按钮。但我只能看到下面的图片。 我在项目控制台中有一个输出,非常可怕,我无法从中理解任何东西。 无法同时满足约束。可能以下列表中至少有一个约束是您不想要的。尝试以下方法:(1)查看每个约束,并尝试找出您不期望的约束;(2) 查找添加了一个或多个不需要的约束

  • 我有一个以编程方式定义的UISegmentedControl。 我正在尝试添加一个布局约束,以便在我的iPad旋转时,分段控件在旋转视图中的大小正确,而不是溢出屏幕。 我应用以下约束: 我的UIsegmentControl定义如下: 我没有出错,但是在运行时,我的分段控件消失了。不确定我在这里错过了什么,因为我过去只在故事板中做过自动布局。 我只想能够调整分段控件的宽度,所以我假设我只需要一个布局

  • 问题内容: 我的应用程序中有以下商店: 我试图做的是以下几点: 每次用户在这四个值之一中键入内容或删除内容时,我都要检查是否为空 如果有任何空白,则应禁用该按钮。 如果所有都已设置(不为空),则应启用该按钮。 我的代码: 好的,它现在可以工作50%。 当我在每个字符中键入一个字符时,该按钮仍处于禁用状态。 当我向其中任何一个添加第二个按钮时,按钮将被启用,等等。 谁能帮我这个? 问题答案: 或者,

  • 在弹出对话框(Alert dialogue)中加入登录框。即在UIAlertView中加入文字输入框(UITextField)。 [Code4App.com]