如何显示Container View ViewController和隐藏Container视图ViewControlle



我想像这个一样显示ContainerView的视图控制器

我使用以下代码,它显示为我想要的

  [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];

但是点击blurr区域后,我想隐藏容器视图。该区域是UIButton。我使用了以下代码,但它什么都不做。

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

任何帮助。提前Thanx。

从本质上讲,您似乎需要显示一种alertview行为,即禁用应用程序中的所有ui,而只启用对话框中的内容。

  • 将showOverlayView:(UIView*)v等公共方法添加到您的应用程序委派中
  • 在此方法中,创建一个视图,设置alpha并将其添加到关键帧窗口中
  • 现在将传递的视图添加到keywindow并计算和设置其中心属性

或者,您可以使用像MJPopupViewController或SLPopupViewControl这样的库来为您完成这项工作。

正确的方法:

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

2-新文件->obj c类->重命名为addLinkQuestionView

现在你有一个xib,a.h和a.m

3-转到xib,在文件的所有者中选择您在步骤2中创建的addLinkQuestionView u

4-将xib设计为您发布的图片链接,并链接适当的出口以添加LinkQuestionView.h

5-要在.h中初始化uiview,请执行以下操作:#导入"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)在BackgroundTapDismissView上可以通过在您的addLinkQuestionView的灰色背景uiview上放置一个uitapgesturerecognizer来完成,这样点击它可以忽略整个uiview(vuComplete)

6-然后将其添加到主视图控制器中,主视图控制器显示如下弹出窗口:A-首先导入addLinkQuestionView.hB-将此代码添加到您的按钮操作上,您正在单击该操作以显示addLinkQuestionView:addLinkQuestionView*popup=[[addLinkQuentionView 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];

玩得开心!

最新更新