2016-07-26 196 views
2

I want to show ContainerView's view controller as like this如何顯示容器視圖視圖控制器和隱藏容器視圖視圖控制器

我使用下面的代碼,它顯示了,因爲我想

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration: 0.8]; 
if (_addLinkQuestionView.isHidden == YES) 
{ 
    _addLinkQuestionView.hidden = NO; 
    _addLinkQuestionView.alpha = 1.0; 
} 
else 
{ 
    _addLinkQuestionView.alpha = 0.0; 
    _addLinkQuestionView.hidden = YES; 
} 
[UIView commitAnimations]; 

但在上羅嗦區域點擊,我想隱藏容器視圖。該區域是UIButton。我使用下面的代碼,但它什麼都不做。

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration: 0.8]; 
    _addLinkQuestionView.alpha = 0.0; 
    _addLinkQuestionView.hidden = YES; 
[UIView commitAnimations]; 

任何幫助。提前Thanx。

+0

你有什麼容器?一個UIViewController實例或一個帶.h和.m的xib? – Harris

+0

請確保第二個代碼部分正在執行,同時通過放置一個斷點或一個'NSLog'來輕擊模糊區域 –

+0

基本上,你想要的是在點擊背景時關閉帶有動畫的彈出窗口嗎? – Harris

回答

0

基本上,您似乎需要顯示一個alertview行爲,其中應用程序的所有ui被禁用,而僅啓用對話框中的內容。 (UIView的*)V到應用程序委託

  • 在這個方法創建一個視圖,設置alpha和它添加到keywindow:

    • 添加公共方法類似showOverlayView。
    • 現在將傳遞的視圖添加到keywindow並計算並設置其中心屬性 。

    或者,您可以使用像MJPopupViewControllerSLPopupViewController這樣的庫爲您完成這項工作。

  • +0

    你是否解釋你的觀點我無法要做到這一點。 –

    +0

    這個圖像有你給https://camo.githubusercontent.com/02c924c29bfaed3a0b54f64438d59adb8e166d68/68747470733a2f2f7261772e6769746875622e636f6d2f6d617274696e6a756861737a2f4d4a506f70757056696577436f6e74726f6c6c65722f6d61737465722f6173736574732f64656d6f322e706e67 MJPopupViewController是使用該庫的要求。 或者在您的容器視圖中添加tapGestureRecognizer以實現相同。 –

    +0

    是的。完全如你所示,但沒有第三方整合。 –

    0

    這樣做的正確方法:

    1-新建文件 - > UIView的 - >重命名爲addLinkQuestionView

    2 - 新文件 - > OBJ C類 - >重命名爲addLinkQuestionView

    現在u有一個廈門國際銀行,一.H和.M

    3-轉到廈門國際銀行和文件的所有者選擇addLinkQuestionViewü步驟創建2

    4-設計廈門國際銀行作爲您發佈的圖片鏈接,並連接起來,適當的網點addLinkQuestionView.h

    5爲了您的UIView初始化中的.h這樣做:#進口 「addLinkQuestionView.h」

    @implementation addLinkQuestionView 
    
    /* 
    // Only override drawRect: if you perform custom drawing. 
    // An empty implementation adversely affects performance during  animation. 
    - (void)drawRect:(CGRect)rect { 
    // Drawing code 
    } 
    */ 
    
    - (id)initWithFrame:(CGRect)frame 
    { 
    self = [super initWithFrame:frame]; 
    if (self) 
    { 
        // Initialization code. 
        [[NSBundle mainBundle] loadNibNamed:@"addLinkQuestionView" owner:self options:nil]; 
    
    
        self.vuComplete.frame = CGRectMake(self.vuComplete.frame.origin.x, self.vuComplete.frame.origin.y, self.frame.size.width, self.frame.size.height); 
    
        [self addSubview:self.vuComplete]; 
    
        self.vuContainer.layer.cornerRadius = 5.0; 
        self.vuContainer.layer.borderWidth = 1.0/[UIScreen mainScreen].scale; 
        self.vuContainer.layer.borderColor = [[UIColor clearColor]CGColor]; 
        self.vuContainer.alpha = 0.0; 
    
    
        [self layoutIfNeeded]; 
    
    } 
    return self; 
    } 
    -(void)awakeFromNib 
    { 
    
    
    } 
    
    
    
    - (IBAction)onBackgroundTapDismissView:(id)sender { 
    [UIView animateWithDuration:0.5 
           animations:^{self.vuContainer.alpha = 0.0;} 
           completion:^(BOOL finished){ }]; 
    
    [self removeFromSuperview]; 
    
    } 
    

    注: - (IBAction爲)onBackgroundTapDismissView可以一個完成在您的addLinkQuestionView的灰背景的UIView丟棄uitapgesturerecognizer,這樣點擊它可以關閉整個的UIView(vuComplete)

    6-然後在您的主視圖控制器添加此那就是像這樣呈現這樣的彈出是: A-導入addLinkQuestionView.h首先 B-將此代碼添加到您的按鈕操作中,然後單擊以呈現addLinkQuestionView: addLinkQuestionView * popup = [[addLinkQuestionView alloc] initWithFrame:CGRectMake(0,0,self.view .frame.size.width,self.view.frame.size.height)];

     [UIView animateWithDuration:0.25 
             animations:^{popup. addLinkQuestionView.alpha = 1.0;} 
             completion:^(BOOL finished){ }]; 
         [self.view addSubview:popup]; 
    

    玩得開心!

    +0

    如何使用ViewController而不是xib。我已經爲圖中顯示的容器設計了視圖控制器。 –

    +0

    使用帶動畫的presentViewController函數 – Harris

    相關問題