У меня есть UIViewController, элементы пользовательского интерфейса которого настроены в раскадровке, и все работает нормально. Теперь я создал новый UIView в отдельных файлах xib, .h и .m, я назову его «оверлей»; Затем я представляю этот оверлей, который должен покрывать все, что ниже, так, чтобы можно было видеть только оверлей:
// in controller.m
OverlayView *overlayView = [[OverlayView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
overlayView.layer.zPosition = 1000;
[self.view addSubview:overlayView];
Наложение отображается в странном положении (его верх находится примерно в 50 пикселях от нижнего края панели навигации). Более того, кроме фона наложения, элементы наложения не видны. Это просто чистый красный холст. Я дважды проверил, что альфа-значения элементов равны 1, они настроены так, чтобы они не были скрытыми, и они также явно установлены в initWithFrame
наложения:
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor redColor]; // red canvas shows up
self.title.textColor = [UIColor blackColor]; // title can't be seen; why not?
self.body.textColor = [UIColor blackColor]; // body can't be seen; why not?
}
return self;
}
Причина, по которой я не помещаю оверлей напрямую в xib контроллера, а затем просто меняю его свойство hidden
, заключается в том, что этот оверлей должен использоваться несколькими контроллерами, и я хотел бы использовать его повторно, таким образом помещая его как отдельное представление .
Что я делаю неправильно?