当前位置:编程学习 > wap >>

ios 网页中图片点击放大效果demo

demo功能:点击网页中的图片,图片放大效果的demo。iphone6.1 测试通过。

demo说明:通过webview的委托事件shouldStartLoadWithRequest来实现。

demo截屏:

 

\\

 


demo主要代码:


 

 
#pragma mark - 
#pragma mark UIWebViewDelegate 
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ 
    //将url转换为string 
    NSString *picName = [[request URL] absoluteString]; 
    NSLog(@"picName is %@",picName); 
    //hasPrefix 判断创建的字符串内容是否以pic:字符开始 
    if ([picName hasPrefix:@"pic:"]) { 
        [self showBigImage:[picName substringFromIndex:4]]; 
        return NO; 
    }else { 
        return YES; 
    } 
} 
#pragma mark - 
//显示大图片 
-(void)showBigImage:(NSString *)imageName{ 
    //创建灰色透明背景,使其背后内容不可操作 
    UIView *bgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; 
    [bgView setBackgroundColor:[UIColor colorWithRed:0.3  
                                               green:0.3  
                                                blue:0.3  
                                               alpha:0.7]]; 
    [self.view addSubview:bgView]; 
    [bgView release]; 
     
    //创建边框视图 
    UIView *borderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, BIG_IMG_WIDTH+16, BIG_IMG_HEIGHT+16)]; 
    //将图层的边框设置为圆脚  
    borderView.layer.cornerRadius = 8;  
    borderView.layer.masksToBounds = YES;  
    //给图层添加一个有色边框  
    borderView.layer.borderWidth = 8;  
    borderView.layer.borderColor = [[UIColor colorWithRed:0.9 
                                                    green:0.9 
                                                     blue:0.9 
                                                    alpha:0.7] CGColor]; 
    [borderView setCenter:bgView.center]; 
    [bgView addSubview:borderView]; 
    [borderView release]; 
     
    //创建关闭按钮 
    UIButton *closeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [closeBtn setImage:[UIImage imageNamed:@"close.png"] forState:UIControlStateNormal]; 
    [closeBtn addTarget:self action:@selector(removeBigImage:) forControlEvents:UIControlEventTouchUpInside]; 
    NSLog(@"borderview is %@",borderView); 
    [closeBtn setFrame:CGRectMake(borderView.frame.origin.x+borderView.frame.size.width-20, borderView.frame.origin.y-6, 26, 27)]; 
    [bgView addSubview:closeBtn]; 
     
    //创建显示图像视图 
    UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(8, 8, BIG_IMG_WIDTH, BIG_IMG_HEIGHT)]; 
    [imgView setImage:[UIImage imageNamed:imageName]]; 
    [borderView addSubview:imgView]; 
    [imgView release]; 
 
} 

#pragma mark -
#pragma mark UIWebViewDelegate
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
    //将url转换为string
 NSString *picName = [[request URL] absoluteString];
 NSLog(@"picName is %@",picName);
    //hasPrefix 判断创建的字符串内容是否以pic:字符开始
 if ([picName hasPrefix:@"pic:"]) {
  [self showBigImage:[picName substringFromIndex:4]];
  return NO;
 }else {
  return YES;
 }
}
#pragma mark -
//显示大图片
-(void)showBigImage:(NSString *)imageName{
 //创建灰色透明背景,使其背后内容不可操作
 UIView *bgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
 [bgView setBackgroundColor:[UIColor colorWithRed:0.3
              green:0.3
            blue:0.3
              alpha:0.7]];
 [self.view addSubview:bgView];
 [bgView release];
 
 //创建边框视图
 UIView *borderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, BIG_IMG_WIDTH+16, BIG_IMG_HEIGHT+16)];
 //将图层的边框设置为圆脚
    borderView.layer.cornerRadius = 8;
 borderView.layer.masksToBounds = YES;
    //给图层添加一个有色边框
 borderView.layer.borderWidth = 8;
 borderView.layer.borderColor = [[UIColor colorWithRed:0.9
             green:0.9
              blue:0.9
             alpha:0.7] CGColor];
 [borderView setCenter:bgView.center];
 [bgView addSubview:borderView];
 [borderView release];
 
 //创建关闭按钮
 UIButton *closeBtn = [UIButton buttonWithType:UIButtonTypeCustom];
 [closeBtn setImage:[UIImage imageNamed:@"close.png"] forState:UIControlStateNormal];
 [closeBtn addTarget:self action:@selector(removeBigImage:) forControlEvents:UIControlEventTouchUpInside];
 NSLog(@"borderview is %@",borderView);
 [closeBtn setFrame:CGRectMake(borderView.frame.origin.x+borderView.frame.size.width-20, borderView.frame.origin.y-6, 26, 27)];
 [bgView addSubview:closeBtn];
 
 //创建显示图像视图
 UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(8, 8, BIG_IMG_WIDTH, BIG_IMG_HEIGHT)];
 [imgView setImage:[UIImage imageNamed:imageName]];
 [borderView addSubview:imgView];
 [imgView release];

}

 

补充:移动开发 , IOS ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,