我有在故事板的用戶界面元素的設置,事情都出現了細小一個UIViewController。現在我在單獨的xib,.h和.m文件中創建了一個新的UIView,我將其稱爲「覆蓋」;然後我呈現覆蓋應低於面面俱到,使得僅覆蓋可以看出:問題,在一個UIViewController呈現外部的UIView:網點不顯示
// in controller.m
OverlayView *overlayView = [[OverlayView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
overlayView.layer.zPosition = 1000;
[self.view addSubview:overlayView];
疊加顯示在一個奇怪位置(它的頂部是一些50像素遠離導航欄的底部)。而且,除了疊加層的背景之外,疊加層中沒有元素可以被看到。這只是一張空白的紅色畫布。我有雙重檢查的elemenets'阿爾法值是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
屬性的是,這是疊加到由多個控制器來使用,並且我想再次使用,因而把它作爲一個單獨的視圖。
我在做什麼錯?
嗨,感謝您的迴應,只是想仔細檢查我的理解正確:我們在這裏談論一個控制器和兩個視圖,第一個視圖是我在故事板中設置的控制器自己的視圖,第二個視圖是這個覆蓋我想介紹控制器自己的觀點。那麼你在這裏談論哪個孩子的觀點? – SeaJelly
另外,你是否暗示我把'[self.view addSubview:overlayView];'viewWillAppear中的邏輯?我已經試過了,結果是一樣的。當我調用'initWithFrame'時,該框架已經設置好了。 – SeaJelly
不,應該在viewDidLoad中添加視圖。在viewWillAppear你可以訪問或更改框架,如果你需要,如果你沒有使用自動佈局。如果您使用自動佈局,則應在視圖添加到viewDidLoad中時添加約束,並且不要混淆幀,並且只能在viewDidLayoutSubviews中訪問該幀。有鑑於此,我不認爲框架已經確定。同樣,如果您使用或不使用自動佈局,這一點非常重要。 –