美文网首页
iOS 毛玻璃 效果 和 旋转有冲突

iOS 毛玻璃 效果 和 旋转有冲突

作者: Cocoa_Coder | 来源:发表于2017-07-14 15:30 被阅读43次

如题
上代码

#pragma mark   ------ - 创建 tableview的headview  ----

- (UIView *)creadTableViewHeadView{
    
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    
    NSInteger   selectedBook = [defaults integerForKey:@"selectedBook"];//读取当前阅读书籍
    
    
    
    //创建 tableview的headview  展示当前阅读的书 以及进度
    UIView * headView = [[UIView alloc]initWithFrame:CGRectMake(20, 20, SCREEN_WIDTH, screen_height/3-20)];
    UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(20, 20, SCREEN_WIDTH/2-60, screen_height/3-60)];
    
    [imageView sd_setImageWithURL:[NSURL URLWithString:_dataArray[1][selectedBook]]];
    
    
    

    
    
    
    ///////////////***冲突*************////////
//    headView  模糊背景效果
    
//    UIBlurEffect *beffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleExtraLight];
//    
//    UIVisualEffectView *view = [[UIVisualEffectView alloc]initWithEffect:beffect];
//    
//    view.frame = headView.bounds;
//    
//    
//    headView.backgroundColor = [UIColor colorWithPatternImage:imageView.image];
//    [headView addSubview:view];
//    
 
更改后的代码  调用以下方法

 //生成一张毛玻璃图片 将图片设为背景颜色

/*
- (UIImage*)blur:(UIImage*)theImage
{
    CIContext *context = [CIContext contextWithOptions:nil];
    CIImage *inputImage = [CIImage imageWithCGImage:theImage.CGImage];
    
    CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];
    [filter setValue:inputImage forKey:kCIInputImageKey];
    [filter setValue:[NSNumber numberWithFloat:15.0f] forKey:@"inputRadius"];
    CIImage *result = [filter valueForKey:kCIOutputImageKey];
    
    CGImageRef cgImage = [context createCGImage:result fromRect:[inputImage extent]];
    
    UIImage *returnImage = [UIImage imageWithCGImage:cgImage];
    CGImageRelease(cgImage);
    return returnImage;
}
    
    */
    
    
    UILabel * headViewLabel = [[UILabel alloc]initWithFrame:CGRectMake(SCREEN_WIDTH/2-20, 40, 140, 30)];
    headViewLabel.text = _dataArray[0][selectedBook];
    
    //阅读进度 label
    UILabel * progressLabel = [[UILabel alloc]initWithFrame:CGRectMake(SCREEN_WIDTH/2+60, (screen_height/3-20)/2, 100, 30)];
    
    
    
    
    float bookReadingProgress = [defaults floatForKey:[NSString stringWithFormat:@"bookReadingProgress%ld",[_dataArray[2][selectedBook] integerValue]]];//读取当前阅读书籍进度
    
   
  
        progressLabel.text = [[NSString stringWithFormat:@"%.2f",bookReadingProgress*100] stringByAppendingString:@"%"];
        
        
        //进度条在左 详细进度百分比在右
        UIProgressView * progressView = [[UIProgressView alloc]initWithProgressViewStyle:UIProgressViewStyleDefault];
        progressView.frame = CGRectMake(SCREEN_WIDTH/2-20, (screen_height/3-20)/2+10, 40, 10);
        
        progressView.progress = bookReadingProgress;
        
        [headView addSubview:progressView];

    
    
   
    
    
   
       
    
    
    
    
    //继续阅读按钮
    UIButton * continueReadingButton = [[UIButton alloc]initWithFrame:CGRectMake(SCREEN_WIDTH-100 , screen_height/3-60, 80, 40)];
    
    [continueReadingButton setTitle:@"继续阅读" forState:UIControlStateNormal];
    [continueReadingButton addTarget:self action:@selector(continueReading) forControlEvents:UIControlEventTouchUpInside];
    
    
    
    [headView addSubview:continueReadingButton];
    [headView addSubview:progressLabel];
    
    [headView addSubview:headViewLabel];
    
    [headView addSubview:imageView];
    
    
    
    //封面旋转效果
    
    CATransform3D transform = CATransform3DIdentity;
    //apply perspective
    transform.m34 = - 1.0 / 500.0;
    //rotate by 45 degrees along the Y axis
    transform = CATransform3DRotate(transform, -M_PI/6,0, 1, 0);
    //apply to layer
    imageView.layer.transform = transform;
//
    
    
    
    return headView;
}

相关文章

网友评论

      本文标题:iOS 毛玻璃 效果 和 旋转有冲突

      本文链接:https://www.haomeiwen.com/subject/zdxohxtx.html