亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

仿面包旅行個人中心下拉頂部背景放大高斯模糊效果

2019-11-14 18:52:00
字體:
來源:轉載
供稿:網友

HeaderView.h

////  HeaderView.h//  仿面包旅行個人中心////  Created by wb145230@163.com on 15/5/14.//  Copyright (c) 2015年 wb145230. All rights reserved.//#import <UIKit/UIKit.h>@interface HeaderView : UIView@PRoperty(nonatomic, strong) UIScrollView *imageScrollView;@property(nonatomic, strong) UIImageView *imageView;                //背景圖片@property(nonatomic, strong) UIImageView *imageBackgroundView;      //要改變的背景圖片/** *  改變頂部view的大小和高斯效果 * *  @param offset scrollview滑動的記錄 */-(void)updateHeaderView:(CGPoint) offset;@end

 

HeaderView.m

////  HeaderView.m//  仿面包旅行個人中心////  Created by wb145230@163.com on 15/5/14.//  Copyright (c) 2015年 wb145230. All rights reserved.//#import "HeaderView.h"#import <Accelerate/Accelerate.h>@implementation HeaderView- (instancetype)initWithFrame:(CGRect)frame {    if (self = [super initWithFrame:frame]) {        self.imageScrollView = [[UIScrollView alloc] initWithFrame:self.bounds];        [self addSubview:self.imageScrollView];                UIImage *image = [UIImage imageNamed:@"header_bg"];        //高斯的背景圖片        self.imageBackgroundView = [[UIImageView alloc] initWithFrame:self.imageScrollView.bounds];        [self setBlurryImage:image];        self.imageBackgroundView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;        self.imageBackgroundView.contentMode = UIViewContentModeScaleaspectFill;        [self.imageScrollView addSubview:self.imageBackgroundView];                //原圖        self.imageView = [[UIImageView alloc] initWithFrame:self.imageScrollView.bounds];        self.imageView.image = image;        self.imageView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;        self.imageView.contentMode = UIViewContentModeScaleAspectFill;        [self.imageScrollView addSubview:self.imageView];    }        return self;}/** *  通過scrollview的滑動改變頂部view的大小和高斯效果 * *  @param offset scrollview下滑的距離 */-(void)updateHeaderView:(CGPoint) offset {    if (offset.y < 0) {        CGRect rect = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);        CGFloat delta = fabs(MIN(0.0f, offset.y));        rect.origin.y -= delta;        rect.size.height += delta;        self.imageScrollView.frame = rect;        self.clipsToBounds = NO;                self.imageView.alpha = fabs(offset.y / (2 * CGRectGetHeight(self.bounds) / 3));    }}/** *  高斯圖片 * *  @param originalImage 需要高斯的圖片 */- (void)setBlurryImage:(UIImage *)originalImage {        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{        UIImage *blurredImage = [self blurryImage:originalImage withBlurLevel:0.9];                dispatch_async(dispatch_get_main_queue(), ^{            self.imageView.alpha = 0.0;            self.imageBackgroundView.image = blurredImage;        });    });    }/** *  高斯背景 * *  @param image    需要高斯模糊的圖片 *  @param blur     高斯模糊的值 * *  @return */- (UIImage *)blurryImage:(UIImage *)image withBlurLevel:(CGFloat)blur {    if ((blur < 0.0f) || (blur > 1.0f)) {        blur = 0.5f;    }        int boxSize = (int)(blur * 100);    boxSize -= (boxSize % 2) + 1;        CGImageRef img = image.CGImage;        vImage_Buffer inBuffer, outBuffer;    vImage_Error error;    void *pixelBuffer;        CGDataProviderRef inProvider = CGImageGetDataProvider(img);    CFDataRef inBitmapData = CGDataProviderCopyData(inProvider);        inBuffer.width = CGImageGetWidth(img);    inBuffer.height = CGImageGetHeight(img);    inBuffer.rowBytes = CGImageGetBytesPerRow(img);    inBuffer.data = (void*)CFDataGetBytePtr(inBitmapData);        pixelBuffer = malloc(CGImageGetBytesPerRow(img) * CGImageGetHeight(img));        outBuffer.data = pixelBuffer;    outBuffer.width = CGImageGetWidth(img);    outBuffer.height = CGImageGetHeight(img);    outBuffer.rowBytes = CGImageGetBytesPerRow(img);        error = vImageBoxConvolve_ARGB8888(&inBuffer, &outBuffer, NULL, 0, 0, boxSize, boxSize, NULL, kvImageEdgeExtend);            if (error) {        NSLog(@"error from convolution %ld", error);    }        CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();    CGContextRef ctx = CGBitmapContextCreate(outBuffer.data, outBuffer.width, outBuffer.height, 8, outBuffer.rowBytes, colorSpace, CGImageGetBitmapInfo(image.CGImage));        CGImageRef imageRef = CGBitmapContextCreateImage (ctx);    UIImage *returnImage = [UIImage imageWithCGImage:imageRef];        //clean up    CGContextRelease(ctx);    CGColorSpaceRelease(colorSpace);        free(pixelBuffer);    CFRelease(inBitmapData);        CGColorSpaceRelease(colorSpace);    CGImageRelease(imageRef);        return returnImage;}@end

 

ViewController.h

////  ViewController.h//  仿面包旅行個人中心////  Created by wb145230@163.com on 15/5/14.//  Copyright (c) 2015年 wb145230. All rights reserved.//#import <UIKit/UIKit.h>#import "HeaderView.h"@interface ViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>@property(nonatomic, strong) UITableView *tableView;@property(nonatomic, strong) HeaderView *headerView;@end

 

ViewController.m

////  ViewController.m//  仿面包旅行個人中心////  Created by wb145230@163.com on 15/5/14.//  Copyright (c) 2015年 wb145230. All rights reserved.//#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    [[UIapplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];        self.view.backgroundColor = [UIColor whiteColor];        self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];    self.tableView.dataSource = self;    self.tableView.delegate = self;    self.tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;    self.tableView.separatorColor = [UIColor clearColor];    self.tableView.showsVerticalScrollIndicator = NO;        self.headerView = [[HeaderView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 250)];    self.tableView.tableHeaderView = self.headerView;    [self.view addSubview:self.tableView];    }-(void)scrollViewDidScroll:(UIScrollView *)scrollView {    [self.headerView updateHeaderView:scrollView.contentOffset];}-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {    return 10;}- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];    if (cell == nil) {        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];    }    cell.selectionStyle = UITableViewCellSelectionStyleNone;    return cell;}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];}@end

 

效果

 

如果你不是在wb145230博客園看到本文,請點擊查看原文.

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲japanese制服美女| 久久久欧美一区二区| 91地址最新发布| 国产精品中文久久久久久久| 日韩美女免费观看| 欧美精品第一页在线播放| 欧洲亚洲免费在线| 91精品视频免费看| 亚洲天堂第二页| 欧美午夜激情在线| 亚洲欧美成人精品| 国产黑人绿帽在线第一区| 国产精品v日韩精品| 一区二区三区国产在线观看| 欧美性色视频在线| 日本电影亚洲天堂| 国产精品私拍pans大尺度在线| 久久久久五月天| 日本伊人精品一区二区三区介绍| 成人精品aaaa网站| 精品久久在线播放| 亚洲视频电影图片偷拍一区| 国内成人精品一区| 国产精品免费一区豆花| 久久久精品网站| 亚洲欧美国产一本综合首页| 欧美日韩一区二区免费视频| 欧美夫妻性生活视频| 日本中文字幕不卡免费| 亚洲精品美女网站| 久久精品成人欧美大片| 亚洲激情国产精品| 青青青国产精品一区二区| 91亚洲精品视频| 成人亚洲综合色就1024| 成人黄色大片在线免费观看| 色综合久久天天综线观看| 大桥未久av一区二区三区| 久久综合网hezyo| 亚洲欧洲日产国码av系列天堂| 成人性生交大片免费看视频直播| 在线丨暗呦小u女国产精品| 亚洲国产精品小视频| 精品国内产的精品视频在线观看| 亚洲一区二区三区乱码aⅴ蜜桃女| 中文字幕国内精品| 成人免费福利在线| 日韩电影在线观看中文字幕| 欧美多人爱爱视频网站| 欧美日本啪啪无遮挡网站| 久久综合电影一区| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲第一页在线| 国产亚洲精品美女久久久久| 欧美激情亚洲自拍| 久久香蕉精品香蕉| 91人成网站www| 欧美日韩国产中文精品字幕自在自线| 日韩一区二区福利| 精品精品国产国产自在线| 91在线国产电影| 亚洲成人久久网| 色偷偷噜噜噜亚洲男人的天堂| 欧美性生交大片免网| 亚洲自拍欧美色图| 国产一区香蕉久久| 伊是香蕉大人久久| 福利视频第一区| 日韩av在线最新| 成人春色激情网| 国产精品中文字幕久久久| 国产视频精品va久久久久久| 欧美日韩国产综合新一区| 国产欧美日韩精品丝袜高跟鞋| 欧美激情视频在线观看| 亚洲热线99精品视频| 日韩精品久久久久久久玫瑰园| 欧美成人国产va精品日本一级| 91中文精品字幕在线视频| 亚洲欧美日本另类| 欧美性猛交xxxx免费看| 欧美日韩免费在线观看| 国产精品黄色av| 精品女厕一区二区三区| xvideos成人免费中文版| 国产精品久久77777| 久久国产精品久久久久| 欧美专区在线视频| 久久99国产精品自在自在app| 亚洲成人精品视频在线观看| 久久久www成人免费精品张筱雨| 国内精品久久久久久久| 中文字幕亚洲情99在线| 国产精品人成电影在线观看| 国产精品一区二区三区久久| 久久视频在线免费观看| 久久福利视频导航| 亚洲午夜色婷婷在线| 黑人精品xxx一区一二区| 国产精品成av人在线视午夜片| 在线日韩av观看| 国内精品视频在线| 中文字幕v亚洲ⅴv天堂| 最近2019中文字幕大全第二页| 国产精品视频播放| 97视频在线观看免费高清完整版在线观看| 日韩美女免费线视频| 欧美天天综合色影久久精品| yw.139尤物在线精品视频| 国产精品久久久久久av下载红粉| 国产九九精品视频| 综合激情国产一区| 亚洲欧美中文日韩在线| 91a在线视频| 精品国产一区av| 亚洲的天堂在线中文字幕| 欧美性jizz18性欧美| 日韩精品有码在线观看| 久久视频在线播放| 亚洲国产欧美精品| 97视频在线观看免费| 在线观看久久久久久| 成人有码在线视频| 国产精品视频午夜| 亚洲国产天堂网精品网站| 欧美大胆a视频| 日韩av日韩在线观看| 69精品小视频| 日韩免费观看在线观看| 久久久久国产精品www| 成人观看高清在线观看免费| 国产最新精品视频| 亚洲精品国产精品国自产观看浪潮| 好吊成人免视频| 永久555www成人免费| 国产精品久久久久久久久久ktv| 亚洲白虎美女被爆操| 日韩中文视频免费在线观看| 成人欧美一区二区三区在线湿哒哒| 在线观看日韩www视频免费| 91理论片午午论夜理片久久| 日韩中文字幕精品视频| 日韩在线观看免费全集电视剧网站| 中文字幕视频在线免费欧美日韩综合在线看| 91精品国产99久久久久久| 韩国三级电影久久久久久| 国产精品久久电影观看| 岛国av一区二区三区| 911国产网站尤物在线观看| 欧美日韩成人在线视频| 久久久久久久国产精品| 欧美久久久精品| 精品高清一区二区三区| 日韩欧美亚洲国产一区| 日韩欧美中文第一页| 国模精品系列视频| 欧美激情亚洲综合一区| 色综合色综合久久综合频道88| 黑人与娇小精品av专区| 久久久999精品视频| 久久成人综合视频| 日韩亚洲在线观看| 久久夜精品va视频免费观看| 色777狠狠综合秋免鲁丝|