2016-07-26 150 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

    相关问题