iOS开发类似于呱呱卡效果,手指划过的区域形成画笔。适用于取出部分图片(截图),如截取出图片中带文字的区域部分。

HKBrushShots

Demo下载地址:

类似于呱呱卡效果,手指划过的路线可以刮出痕迹。

??功能:

用于取出部分图片(截图),如截取出图片中带文字的区域部分。

??效果:

截取出图片中的“你就是我的全世界”文字区域的图片:

截取出图片中那只呆萌的小犀牛??:

更多截图效果:

??使用:

1 - 首先将工程中的“HKScreenShot”文件夹拷贝至项目中。
2 - 在需要使用的类中引入头文件:
#import "HKCropView.h"
#import "HKLineView.h"
3 - 创建2个自定义view的对象:
@property (nonatomic, strong) HKCropView *cropView;
@property (nonatomic, strong) HKLineView *lineView;
4 - lineView作为覆盖view,用以下方式创建、并设置代理,view的frame需要根据具体的image调整暂时不定义:
// 画笔的属性在这里修改
- (HKLineView *)lineView {
    if (!_lineView) {
        _lineView = [[HKLineView alloc] init];
        _lineView.backgroundColor = [UIColor blackColor];
        _lineView.alpha = 0.5;
        _lineView.delegate = self;
        _lineView.currentLineColor = [UIColor whiteColor];
        _lineView.currentLineWidth = 20.0;
    }

    return _lineView;
}
5 - 遵守HKScreenShotImageViewRectDelegate代理:
<HKScreenShotImageViewRectDelegate>
6 - 接着获取图片,如果图片来源为系统相册,需要对图片方向做调整:

使用Demo中ViewController.m中的"fixOrientation:"方法修复。

// 修复照片的方向问题
- (UIImage *)fixOrientation:(UIImage *)aImage
7 - 在获取到图片image后,此时在显示这个image的imageView上将lineView覆盖上去:
    // 在原始图片上蒙上一层半透黑底背景
    // originalImageView为显示选取image的imageView
    self.lineView.frame = self.originalImageView.frame;
    [self.view addSubview:self.lineView];
8 - 上几步操作完成后就可以在图片上刮出痕迹了。当结束刮图后、代理会返回刮出的区域rect:
// 代理回调手指划出图片的区域rect
- (void)getScreenShotImageViewRect:(CGRect)rect {
// 获取到需要截取图片的区域rect
}
9 - 拿到从上一步获取的rect与选取的原始图片imageView后调用截图view的方法,就可以获取到所需要的图片了:
- (UIImage *)clipWithImageRect:(CGRect)clipRect clipImage:(UIImageView *)orgiImageView {
    if (!_cropView) {
        // 初始化
        _cropView = [[HKCropView alloc] initWithImageView:orgiImageView];
    }

    UIImage *newImage = [_cropView getClipImageRect:clipRect];
    [_cropView removeFromSuperview];
    _cropView = nil;
    return newImage;
}

??接口:

1 - HKCropView 裁剪图片类:
/**
 初始化剪切视图

 @param imageView 原始图片imageView
 @return self
 */
- (id)initWithImageView:(UIImageView *)imageView;

/**
 获取剪切图片
 传入一个rect

 @param newRect 需要截图的区域rect
 @return 截取出来的图片image
 */
- (UIImage *)getClipImageRect:(CGRect)newRect;
2 - HKLineManager 画笔属性类:
@property (nonatomic,assign) float lineWidth;//线宽
@property (nonatomic,strong) UIColor *lineColor;//线颜色
@property (nonatomic,strong) NSMutableArray *linePointsMArr;//线点数组
3 - HKLineView.h 画笔(手指)划动效果类:
/**
 清空所有的线
 */
-(void)cleanAllLine;

/**
 撤销上一条线
 */
-(void)cleanBeforeLine;

??注意:

本demo为了简洁明了,直接选取的是正方形的图片。如果选择非正方形图片会导致变形,这样截图区域会不准确。

正确做法:应该在展示image时,根据image具体的比例调整“orgiImageView”的frame,这样截取出来的图片才是正确的。

原文地址:https://www.cnblogs.com/liuhuakun/p/10551592.html

时间: 2024-11-06 12:30:07

iOS开发类似于呱呱卡效果,手指划过的区域形成画笔。适用于取出部分图片(截图),如截取出图片中带文字的区域部分。的相关文章

iOS开发 QQ粘性动画效果

QQ(iOS)客户端的粘性动画效果 时间 2016-02-17 16:50:00  博客园精华区 原文  http://www.cnblogs.com/ziyi--caolu/p/5195615.html 主题 iOS开发 qq的app中要是有新的联系人发消息过来,相应联系人的cell右边会有一个红色的圆圈表示消息条数.如果去触碰那个圆圈,可以发现它竟然会跟着手指的移动而移动. 在一定范围内,手指离开屏幕,会发现红色圆圈会自动弹性的回到原来的位置.而如果超出一定距离,这个圆圈会做一个销毁的动画,

iOS开发——UI篇&amp;提示效果

提示效果 关于iOS开发提示效果是一个很常见的技术,比如我们平时点击一个按钮,实现回馈,或者发送网络请求的时候! 技术点: 一:View UIAlertView UIActionSheet 二:控制器 UIAlertController 三:第三方库 SVProgressHUD MBProgressHUD 下面是主界面: 首先我们来看看系统自带的一些提示框(View) 一::UIAlertView 1:创建UIalertView(这里只说纯代码创建的方式) 1 UIAlertView *aler

iOS开发探索-高斯模糊&amp;毛玻璃效果

iOS开发中有的时候需要将图片设置模糊,来实现特定的效果获取更好的用户体验, iOS7之后半透明模糊效果得到大范围使用的比较大,现在也可以看到很多应用局部用到了图片模糊效果,可以通过高斯模糊和毛玻璃效果达到图片模糊效果. 左边玻璃右边模糊 高斯模糊效果 1. CoreImage: iOS5.0之后就出现了Core Image的API,Core Image的API被放在CoreImage.framework库中, 在iOS和OS X平台上,Core Image都提供了大量的滤镜(Filter),在

ios开发之--简单动画效果的添加

记录一个简单的动画效果,自己写的,很简单,仅做记录. 附一个demo的下载地址: https://github.com/hgl753951/hglTest.git 代码如下: 1,准备 BOOL _isOpen; NSMutableArray * _btnArray; 2,具体代码 -(void)initUI { _btnArray = [[NSMutableArray alloc]init]; for (int i=0; i<4; i++) { UIButton * btn = [UIButt

iOS开发--UIPickerView的动画效果

开发中用到UIPickerView显示和隐藏的动画.随手记一下 第一步:写一个动画方法 - (void)ViewAnimation:(UIView*)view willHidden:(BOOL)hidden { [UIView animateWithDuration:0.3 animations:^{ if (hidden) { view.frame = CGRectMake(0, [UIScreen mainScreen].bounds.size.height, [UIScreen mainS

ios开发之公交卡系统的设计与实现

// // main.m // Bus-公交 /* 公交一卡通充值系统,有两种功能选择,第一种投入硬币或者纸币 选择购票,第二种一卡通充值,充值面额是20,50,100 */ #import <Foundation/Foundation.h> #import "Card.h" #import "ChargeMachine.h" #import "Money.h" int main(int argc, const char * argv

iOS开发之吸附动画效果

步骤:1.使用singleviewapplication创建新的项目 2.在.h文件中创建两张图片的实例对象,并与相关的图片进行相连:创建一个UIDynamicAnimator实例对象 3.在.m文件中使用UIAttachmentBehavior创建吸附对象,调用 [UIAttachmentBehavior alloc] initWithItem:<#(nonnull id<UIDynamicItem>)#> attachedToAnchor:<#(CGPoint)#>

iOS开发日记46-倒计时效果的实现

今天博主有一个倒计时效果的实现的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. 首先在需要用到的地方解析总的倒计时时间,博主没有封装,各位看官可以自行封装 #pragma mark--------新修改,增加倒计时 NSString *stringOfTime=[NSString stringWithFormat:@"%@",d[@"shipping_time"]]; double endUnixTime = [stringOfTime doubleVa

iOS开发QQ空间半透明效果的实现

//1.首先我们可以确定的是cell的半透明, /* white The grayscale value of the color object, specified as a value from 0.0 to 1.0. alpha The opacity value of the color object, specified as a value from 0.0 to 1.0. */ cell.backgroundColor = [UIColor colorWithWhite:1 alp