【问题标题】:Why does UIWebView scalespagetofit not work when showing the view in an animation block?为什么在动画块中显示视图时 UIWebView scalespagetofit 不起作用?
【发布时间】:2011-12-13 09:44:07
【问题描述】:

我想淡出一个视图并在最后显示一个 webview,页面缩放以适应 webview。但是,当我尝试通过完成块在动画结束时显示 webview 时,网页没有缩放以适合适当的大小,而是缩放太多并且需要平移才能看到所有内容。 例如,如果我有:

- (void)viewDidLoad {
    [super viewDidLoad];
    webView = [[UIWebView alloc] init];
    webView.scalesPageToFit = YES;
    webView.backgroundColor = [UIColor blackColor];

    self.view.alpha = 1;
    self.view.backgroundColor = [UIColor whiteColor];
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://stackoverflow.com"]]];
//    self.view = webView;
    [UIView animateWithDuration:2 delay:0.0
                        options:UIViewAnimationOptionBeginFromCurrentState
                     animations:^{ self.view.alpha = 0; }
                     completion:^(BOOL fin){ self.view = webView; }];
}

UIWebView 中的东西不能正确缩放,但如果我放弃动画并只分配self.view = webView,页面呈现为scalesPageToFit = YES 时所期望的那样。有谁知道怎么回事?

【问题讨论】:

    标签: ios uiwebview


    【解决方案1】:

    为了回答我自己的问题,我认为这是由于 webview 在加载内容时最初没有任何明确的参考框架可以使用,因此当我突然将其设置为控制器的视图时,它无法正确布局内容动画之后。

    作为修复,我所要做的就是在 viewDidLoad 中给它一个框架:webView.frame = self.view.frame;

    我在上面很幸运;到 viewDidLoad: 时,已经为 self.view 设置了框架,因为它是在笔尖中指定的。如果我在loadView: 中动态生成视图而不在那里设置任何框架,我必须将该框架分配推迟到viewWillAppear:。 (浪费了一点时间来提醒自己,这很艰难!)

    【讨论】:

      猜你喜欢
      • 2012-01-31
      • 2019-12-29
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      • 2018-02-28
      • 1970-01-01
      相关资源
      最近更新 更多