2013-03-03 96 views
3

我需要添加一個子視圖到UIViewController的左邊部分,它顯示當masterview被隱藏(縱向)時,屏幕左邊部分附近有東西的用戶。這個觀點必須與UISplitView的左邊部分一起移動。像這兩個圖像中帶有箭頭的視圖。 (對不起,俄羅斯接口) http://s2.uploads.ru/8EHJI.png http://s2.uploads.ru/NhEam.png 但我的問題是,當我嘗試添加這樣的視圖時,它剪輯到masterview的邊界,並且當隱藏masterview時不可見。我想,我做錯了,有一個簡單的方法來做到這一點。添加子視圖到MasterView的UISplitViewController

更新:我試圖做一些黑客一樣:

-(void) clipToBoundsRecursive:(UIView *)someView 
{ 
    NSLog(@"%@", someView); 
    someView.clipsToBounds = NO; 
    for (UIView *v in someView.subviews) 
    { 
     [self clipToBoundsRecursive:v]; 
    } 
} 

,並將其發送到查看splitviewcontroller

UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController; 
[self clipToBoundsRecursive:splitViewController.view]; 

這需要在第一時間效應(外馬西德威的邊界顯示子視圖,但首先顯示/隱藏動畫後,他們消失了,如果我再調用這個方法甚至不出現)

回答

2

聲音給我像你的應用程序可以受益於PKRevealController

+0

這看起來不錯,但我想在我的項目中使用StoryBoard。 – Padavan 2013-03-13 09:10:12

+0

@Padavan我相信你仍然可以使用故事板。你只需要在App Delegate中設置* some *。我使用它,它非常簡單。 – Undo 2013-03-13 15:05:59

6

您可以添加該視圖直接指向窗口的view,但您必須根據設備何時旋轉手動管理其位置。添加到window.view的視圖將出現在rootViewController.view的上方。

+0

但是我怎樣才能將它的位置與縱向移動的masterView同步呢? – Padavan 2013-03-06 05:48:14

+0

實際上,您可以將其添加到masterView的視圖(作爲子視圖),然後關閉'masterView.clipsToBounds'以允許在其界限外進行繪製。 – Tim 2013-03-06 17:50:50

+0

它不起作用。也許我需要改變splitViewController的clipToBounds屬性。查看,但它是未公開的UILayoutContainerView。 – Padavan 2013-03-06 20:11:17

3

我在這裏所描述的簡單的邏輯爲您提供:(如何在Window添加UIView,並從你的主人或詳細查看稱呼它)

創建#import "AppDelegate.h"UIView

- (void) CreateViewInWindow 
{ 
    UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 780)];// set as u wish 
    myView.backgroundColor = [UIColor redColor]; 

    // I have added myView to the Window with a specific animation , your can give animation as you like. :) 
    [UIView transitionWithView:self.window duration:0.5 
         options:UIViewAnimationOptionTransitionCrossDissolve // change to whatever animation you like 
        animations:^ { [self.window addSubview:myView]; } 
        completion:nil]; 
} 

這裏在DetailViewController.m文件中創建一個簡單的UIButton)您可以將代碼放在任一文件DetailViewController.mMasterViewController.m

UIButton *btnShowView = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[btnShowView addTarget:self action:@selector(btnShowViewTapped:) forControlEvents:UIControlEventTouchUpInside]; 
btnShowView.frame = CGRectMake(20, 30, 174, 35); 
//[btnLoginInner setBackgroundImage:[UIImage imageNamed:@"LoginBut.png"] forState:UIControlStateNormal]; 
[self.view addSubview:btnShowView]; 

在按鍵敲擊的方法,編寫代碼調用從AppDelegateUIView,也不要忘記DetailViewController.m添加#import "AppDelegate.h"

-(void)btnShowViewTapped:(UIButton *) Sender 
{ 
    AppDelegate *del = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    [del performSelector:@selector(CreateViewInWindow) withObject:nil afterDelay:0]; 
} 

上面的代碼是一個您的問題的簡單邏輯,它可能對您有所幫助。

+0

感謝您的回答。如果我可以檢測縱向方向移動SplitView的masterView並且可以在UIWindow上同步移動我的視圖,這可能會有所幫助。這是一個問題。你有什麼想法如何做到這一點? UISplitViewControllerDelegate協議不能幫助我。 – Padavan 2013-03-07 21:33:40

+0

這是工作,如果只需要更改uiview的動畫..嘗試使用我的代碼並更改UIView的masterView實例 – iPatel 2013-03-08 04:26:52

1

如果您使用的是筆尖,請嘗試取消選擇身份和類型平鋪中的自動佈局選項,否則請設置自動確定屏蔽以查看當前的裁剪。我相信它會解決問題