2014-02-18 96 views
0

我想在self.view之上添加名爲anotherView的視圖。但我不想讓另一個視圖成爲子視圖。這可能嗎?在現有視圖頂部添加新視圖

我想anotherView是在頁面的頂部向下推相應的self.view的內容(而無需改變y或高度值。

我有以下的,它不工作:

UIView *anotherView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, self.view.frame.size.width, 80)]; 
anotherView.backgroundColor = [UIColor yellowColor]; 

[self.view insertSubview:anotherView aboveSubview:self.view]; 

的方框是簡單地在現有的視圖的頂部

+0

你可以添加你anotherView作爲一個視圖控制器的看法子視圖,然後出示。 – chancyWu

回答

0

任何可見視圖是一些其它視圖或窗口的子視圖

乙。 UT您可以添加到anotherView

self.view.superview 

甚至

self.view.window 

,或者創建新的UIWindow對象和你的子視圖添加到該窗口

+0

你會如何將現有視圖向下放置以爲其他視圖騰出空間? – Julia

+0

不知道我是否正確理解你。 UIView對象可以包含任意數量的子視圖。通過addSubview視圖添加的最後一個將是最上面的一個。但你也可以使用UIView的方法' - (void)insertSubview:(UIView *)viewSubview:(UIView *)siblingSubview','insertSubview:belowSubview:''和'insertSubview:atIndex:'管理子視圖的Z位置 – Avt

+0

我試過使用' - (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview',但它不會推送siblingSubview。 – Julia

0

您曾經試圖模態呈現anotherView?這樣你可以使它看起來完全是一個全新的視圖控制器。例如:

[self presentModalViewController:anotherView animated:YES];

假設當然anotherView是UIViewController的一個子類,並有它自己的View屬性。因爲如果另一個視圖只是UIView的子類,那麼你不能在不作爲當前視圖控制器的子視圖的情況下呈現它。

編輯: 哦,是的,你可以只通過一個零到完成塊:

[self presentViewController:anotherView animated:YES completion:nil]; 
+0

謝謝,我會試試這個! – Julia

+0

我收到一個警告,它已被棄用。 – Julia

+0

' - (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void(^)(void))completion'應該用來代替 – Avt