我可以动画视图从隐藏中淡入吗?

时间:2017-08-02 23:00:38

标签: ios objective-c animation

一旦初始视图加载,我试图让视图scrim在视图控制器中的所有内容之后淡入5秒。这就是我现在所拥有的。

- (void)viewDidLoad {


[super viewDidLoad];
// Do any additional setup after loading the view.

[self setupAlarmPoll];
[self setupTimeLabel];
self.shouldRefresh = YES;
[self refreshSpotifyToken];
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(receiveNotification:)
                                             name:@"backHome"
                                           object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(receiveNotification:)
                                             name:@"applicationDidEnterBackground"
                                           object:nil];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 5.0 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{

    [UIView animateWithDuration:2.00 animations:^{

       self.scrim.hidden = NO;
    }];



});

然而,我并没有逐渐淡出。视图刚刚出现。如何在objective-c中完成此动画?

3 个答案:

答案 0 :(得分:2)

是的,但它不是isHidden您正在寻找的,它是视图的alpha属性。你知道,isHidden只会直接声明是否100%无法完全看到 。因此,您无法为isHidden的{​​{1}}属性制作动画。但这是UIView属性拯救的地方,因为它的用途与您alpha尝试的完全一样。 alpha属性确定淡出 isHidden在屏幕上的方式。因此,如果UIView位于alpha,则会隐藏它。因此,如果您将观看次数0设置为alpha,请使用您可以在视图中淡出的关注代码:

0

答案 1 :(得分:1)

视图的alpha属性不可动画。但是,self.scrim.alpha = 0; self.scrim.hidden = NO; [UIView animateWithDuration:2.00 delay: 5.0 options: 0 animations:^{ self.scrim.alpha = 1.0; } completion: nil ]; 属性 可动画。您需要:

  1. 将alpha设置为零
  2. 将hidden设置为false。
  3. 将alpha动画设为1.0
  4. 通过这样做,您可以使视图不再隐藏,但完全透明。您将alpha属性设置为0.0到1.0的动画,使视图根据需要淡入。

    代码如下所示:

    dispatch_after

    (请注意,长形式的animateWithDuration采用延迟参数,因此您不必在调用import bs4 as bs import sys import urllib.request from PyQt5.QtWebEngineWidgets import QWebEnginePage from PyQt5.QtWidgets import QApplication from PyQt5.QtCore import QUrl class Page(QWebEnginePage): def __init__(self, url): self.app = QApplication(sys.argv) QWebEnginePage.__init__(self) self.html = '' self.loadFinished.connect(self._on_load_finished) self.load(QUrl(url)) self.app.exec_() def _on_load_finished(self): self.html = self.toHtml(self.Callable) print('Load finished') def Callable(self, html_str): self.html = html_str self.app.quit() def main(): page = Page('http://www.wsj.com/mdc/public/npage/2_3023_creditdervs.html') soup = bs.BeautifulSoup(page.html, 'html.parser') tableSup = soup.find_all("td",{"class": "col2 yellowBack"}) print(tableSup) if __name__ == '__main__': main() 时将其包装。)

    另外,为什么要在Objective-C中进行新的开发?

答案 2 :(得分:1)

像其他人提到的那样动画alpha,或者transitionWithView使用UIViewAnimationOptionTransitionCrossDissolve

- (void)viewDidLoad {
    [super viewDidLoad];

    self.scrim.hidden = true;
}

- (void)viewDidAppear:(BOOL)animated {
    [UIView transitionWithView:self.scrim duration:2 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
        self.scrim.hidden = false;
    } completion:nil];
}