使用子视图按钮淡化 UIView

Posted

技术标签:

【中文标题】使用子视图按钮淡化 UIView【英文标题】:Fading a UIView with a subviewed button 【发布时间】:2012-07-04 14:16:43 【问题描述】:

我正在尝试创建一个在我打开页面时淡出然后淡入的按钮。

这是我正在使用的当前代码,无法淡入/淡出按钮:

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view

    if (index == 0) 
        view = [[[NSBundle mainBundle] loadNibNamed:@"nib1" owner:self options:nil] lastObject];
    else 
        view = [[[NSBundle mainBundle] loadNibNamed:@"nib2" owner:self options:nil] lastObject];
        UIView *containView = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 60, 100)];
        _btn = [UIButton buttonWithType:UIButtonTypeCustom];
        _btn.frame = CGRectMake(30, 90, 40, 30 );
        [_btn setBackgroundImage:[UIImage imageNamed:@"playButton.png"] forState:UIControlStateNormal];
        [_btn addTarget:self action:@selector(fadeButton:) forControlEvents:UIControlEventTouchUpInside];
        //[self fadeOut:_btn withDuration:1.0 andWait:1.0];
        [containView addSubview:_btn];
        [containView setAlpha:0.0];
        [view addSubview:containView];
        [UIView beginAnimations:nil context:nil];
        [containView setAlpha:1.0];
        [UIView commitAnimations];
    
return view;

我也试过使用:

[UIView animateWithDuration:0.5 animations:^_btn.alpha = 1.0;];

这些都不起作用。有人对如何淡出子视图有任何提示吗?谢谢

【问题讨论】:

【参考方案1】:

当您调用 [UIView commitAnimations] 时,动画同时进行动画处理。 当您想在其他动画之后为某些内容设置动画时,请尝试使用完成嵌套动画块:

[UIView animateWithDuration:0.5 animations:^

   //animate out

completion:^ (BOOL finished)

    [UIView animateWithDuration:0.5 animations:^
    
       //animate in
    
    completion:^ (BOOL finished)
    
      //Optional
    ];
];

【讨论】:

【参考方案2】:

要淡出,您必须将 alpha 设置为 0,而不是 1。

[UIView animateWithDuration:0.5 animations:^_btn.alpha = 0.0;];

这应该可行。

【讨论】:

我的意思是在我原来的帖子中说,每当我尝试这样做时,就像将 alpha 设置为 0.0 一样,按钮永远不会出现。它总是隐藏的。

以上是关于使用子视图按钮淡化 UIView的主要内容,如果未能解决你的问题,请参考以下文章

淡化动画(UIView 动画)

uiview 作为包含 uitableview 的子视图

添加为 UIView 的子视图后,按钮不可点击

动画 UIView 的子视图在动画期间不保持约束

更新 UIView 会产生子视图对齐/Swift 的散列

将模态视图关闭到不同的 uiview