ios – UIButton在使用自动布局时停止工作

前端之家收集整理的这篇文章主要介绍了ios – UIButton在使用自动布局时停止工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我用编程方式组装了一个简单的视图控制器,上面只有两个按钮.如果我去学校并为布局设置框架大小,那么一切都很好.但是,如果我对布局使用自动布局约束,则按钮显示完美,但它们不响应按下.他们甚至没有强调.我的loadview方法在下面的形式,使按钮不起作用.如果取消注释框架设置代码添加注释的约束,则按钮开始按预期响应按下.有谁知道发生了什么事?我希望将我的代码库中所有旧的硬编码布局转换为基于约束的,但似乎是在第一个障碍下降.
  1. - (void)loadView {
  2. self.view = [UIView new];
  3. self.view.translatesAutoresizingMaskIntoConstraints = NO;
  4.  
  5. self.navigationItem.title = @"Landing Page";
  6.  
  7. UIButton *buildExercisesButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
  8. self.buildExercisesButton = buildExercisesButton;
  9. // buildExercisesButton.frame = CGRectMake(20,312,164,44);
  10. self.buildExercisesButton.translatesAutoresizingMaskIntoConstraints = NO;
  11. [self.buildExercisesButton setTitle:@"Build Exercises" forState:UIControlStateNormal];
  12. [self.buildExercisesButton addTarget:self action:@selector(buildExercisesButtonPressed) forControlEvents:UIControlEventTouchUpInside];
  13. [self.view addSubview:self.buildExercisesButton];
  14.  
  15. UIButton *organiseExercisesButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
  16. self.organiseExercisesButton = organiseExercisesButton;
  17. // organiseExercisesButton.frame = CGRectMake(192,44);
  18. self.organiseExercisesButton.translatesAutoresizingMaskIntoConstraints = NO;
  19. [self.organiseExercisesButton setTitle:@"Organise Exercises" forState:UIControlStateNormal];
  20. [self.organiseExercisesButton addTarget:self action:@selector(organiseExercisesButtonPressed) forControlEvents:UIControlEventTouchUpInside];
  21. [self.view addSubview:self.organiseExercisesButton];
  22.  
  23. NSDictionary *variables = NSDictionaryOfVariableBindings(buildExercisesButton,organiseExercisesButton);
  24. NSArray *constraints =
  25. [NSLayoutConstraint constraintsWithVisualFormat:@"|-[buildExercisesButton(organiseExercisesButton)]-[organiseExercisesButton]-|"
  26. options:NSLayoutFormatAlignAllTop | NSLayoutFormatAlignAllBottom
  27. metrics:nil
  28. views:variables];
  29. [self.view addConstraints:constraints];
  30.  
  31. constraints =
  32. [NSLayoutConstraint constraintsWithVisualFormat:@"V:[buildExercisesButton]-|"
  33. options:0
  34. metrics:nil
  35. views:variables];
  36. [self.view addConstraints:constraints];
  37. }

在viewDidAppear中,我打印出按钮的帧.他们给出了奇怪的价值,我不知道它是否相关.实际上,按钮在屏幕中央彼此并排显示.

  1. buildExercisesButton: {{20,-63},{164,44}}
  2. organiseExercisesButton: {{192,44}}

解决方法

您需要为要添加按钮的视图定义约束,或将translatesAutoresizingMaskIntoConstraints属性设置为YES.

猜你在找的iOS相关文章