加载视图时如何使图像覆盖屏幕?

时间:2014-03-20 21:35:16

标签: ios objective-c uiimageview uikit

我有一个网页浏览器,当你点击网页上的链接时,我希望屏幕在页面停留的持续时间内显示图像(这听起来很奇怪,但这是有充分理由的。) / p>

我是XCode的新手并且已经完成了一些教程,但是对于我来说如何在XCode(以及一般的目标C)中实现目标仍然是模糊的。

似乎这个过程应该是这个 - 在webViewDidStartLoad方法中,我调用一个类,它是一个UIImageView。在那个班级是形象。然后在webViewDidFinishLoad中,我删除图像,或者将其降低到堆栈上。

我很困惑你需要做的所有事情来实现这一目标。这是我到目前为止所做的:

一个名为loadingView的类,其中有一个名为showLoadingScreen的方法。在这个方法中,我有代码:

 UIView *view=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];
 [view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"Icon-76.png"]]];

然后我转到故事板并在webView上插入一个新的UIView,并给它类loadView。然后我控制从这个UIView点击到ViewController.h,并将它放在视图控制器中,创建代码:

@property (strong, nonatomic) IBOutlet UILabel *loadingPageView;

并导入loadingView.h。

这是对的吗?如果是,那么我需要将此方法放入webViewDidStartLoad,但我无法弄清楚要放在那里的代码。我似乎做了类似的事情:

[self.view addSubview:imageView];

但我不知道如何根据我的代码自定义它。

2 个答案:

答案 0 :(得分:3)

如果您希望视图覆盖屏幕,请使用:

[[[UIApplication sharedApplication] keyWindow] addSubview:myImageView];

这会将您的UIImageView添加到您的关键UIWindow,它将显示在任何UIViewController上。否则,将您的UIImageView添加为UIWebView的子视图。如果要保证UIImageView位于视图堆栈的顶部,请调用:

[self.webView bringSubviewToFront:myImageView];

无论哪种方式,将您的UIImageView维护为全局属性/ ivar,以便稍后调用:

[myImageView removeFromSuperview];

答案 1 :(得分:2)

步骤1:在某处声明imageview属性:

@property (strong, nonatomic) UIImageView * coverImageView;

第2步:在webViewDidStartLoad

中显示图片视图
- (void) webViewDidStartLoad:(UIWebView *)webView {
    if (!_coverImageView) _coverImageView = [[UIImageView alloc]init];
    _coverImageView.frame = self.view.bounds;
    _coverImageView.image = [UIImage imageNamed:@"Icon-76.png"];
    [self.view addSubview:_coverImageView];
}

第3步:删除webViewDidFinishLoad

中的图片视图
- (void) webViewDidFinishLoad:(UIWebView *)webView {
    [_coverImageView removeFromSuperview];
}