圖片濾鏡iOS類庫:FeSlideFilter

jopen 10年前發布 | 40K 次閱讀 iOS開發 移動開發 FeSlideFilter

用很生動的方式實現圖片濾鏡的選擇過程。一般的圖像加工類app,圖像濾 鏡的選擇都是通過彈出一排濾鏡效果(通常是默認圖片的濾鏡效果)讓用戶點擊,然后再生成對應的圖像效果。這份代碼實現的濾鏡選擇過程是,直接在原圖產生濾 鏡效果,用戶通過滑動屏幕,濾鏡效果類似蒙版一樣蓋住原圖,十分方便用戶瀏覽不同的濾鏡效果。

 圖片濾鏡iOS類庫:FeSlideFilter

Requirement

FeSpringFlowLayout use UIKit Dynamics to implement.

So You must ensure your project has iOS version more than iOS 7.0.

And compatible with ARC or non-ARC.

Sample code

In Sample code, I user LUT technique to apply filter to photo.

More info, visist my blog : http://nghiatran.me/index.php/filter-me-color-lookup-table-part-2/

If you wanna use LUT, please sure you added Core Image and OpenGL ES framwork to your project.

How to use

FeSlideFilter use Data Source / Delgate pattern like UITableView.

Just provide filtered UIImage

and Title for each Filter.

Ex :

// Number of filter
-(NSInteger) numberOfFilter
{
    return 5;
}

// Title for filter at index
-(NSString *) FeSlideFilterView:(FeSlideFilterView *)sender titleFilterAtIndex:(NSInteger)index
{
    return _arrTittleFilter[index];
}

// Filtered UIImage at index
-(UIImage *) FeSlideFilterView:(FeSlideFilterView *)sender imageFilterAtIndex:(NSInteger)index
{
    return _arrPhoto[index];
}

If you want to customize by yourself. Just assign your button with _doneBtn property.

// Btn
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    btn.frame = CGRectMake(0, 0, 40, 40);
    [btn setBackgroundImage:[UIImage imageNamed:@"done"] forState:UIControlStateNormal];

    _slideFilterView.doneBtn = btn;

Data Source - Delegate

You can change behavior by changing 3 properties when init

Data Source :

@required
// Number of filter
-(NSInteger) numberOfFilter;

// Title filter at index
-(NSString *) FeSlideFilterView:(FeSlideFilterView *) sender titleFilterAtIndex:(NSInteger) index;

// Image at index
-(UIImage *) FeSlideFilterView:(FeSlideFilterView *) sender imageFilterAtIndex:(NSInteger) index;

@optional
// Font at index
-(UIFont *) FeSlideFilterView:(FeSlideFilterView *) sender fontForTitleAtIndex:(NSInteger) index;

// Layer's content Gravity
-(NSString *) kCAContentGravityForLayer;

Delegate :

// Call when user tapped Btn
-(void) FeSlideFilterView:(FeSlideFilterView *) sender didTapDoneButtonAtIndex:(NSInteger) index;

// Determine when user can slide
-(BOOL) FeSlideFilterView:(FeSlideFilterView *)sender shouldSlideFilterAtIndex:(NSInteger) index;

// Call when user have just slided
-(void) FeSlideFilterView:(FeSlideFilterView *)sender didBeginSlideFilterAtIndex:(NSInteger) index;

// Call when user end Slide
-(void) FeSlideFilterView:(FeSlideFilterView *)sender didEndSlideFilterAtIndex:(NSInteger) index;

MIT License

項目主頁:http://www.baiduhome.net/lib/view/home/1413862566950

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!