UIButton 标签没有出现在 UIImageView 上

UIButton label doesn't appear on UIImageView

我使用 Interface Builder 来放置一个 UIButton 和一个叠加的 UIImageView。 在代码中,如果图像存在,我更改按钮标签

在Example.h

@property (strong, nonatomic) IBOutlet UIButton *takePicture;
@property (strong, nonatomic) IBOutlet UIImageView *image;

在Example.m

[self.image setImage:aPhoto];
(...)
NSString    *pictureButtonTitle     = myCondition@"Changer la photo":@"Ajouter une photo";
(...)
[self.takePicture   setTitle:pictureButtonTitle forState:UIControlStateNormal];

我将此代码用于视图,当 myCondition 为真时,我在图片上正确地看到了 "Change picture"。 但是在另一个视图中,什么都没有出现!为什么?

嗯,我发现:在 Interface Builder 中,放置对象的顺序似乎很重要

如果在 UIButton 之前放置一个 UIImageView,效果会很好。

我看到标签了

但是如果你反过来:按钮在图片下面。

并且标签不显示

我仍然不知道这是否是重新排列这些项目的唯一方法?

您可以在界面生成器中执行此操作 - 就像您所做的那样,或者在您的 viewDidLoad 方法中执行此操作:

- (void)viewDidLoad {
    [super viewDidLoad];
  [self.view bringSubviewToFront:self.button];
}

按照您的方式在 IB 中安排插座意味着下方的对象将位于其他对象之上...当按钮放置在所有其他对象下方时,按钮将 "front"/位于顶部你在屏幕截图中显示。

如果你想以不同的方式布置插座,你也可以使用这些方法:

[self.view insertSubview:self.button aboveSubview:self.imageView];

或者:

[self.view insertSubview:self.imageView belowSubview:self.button];