(IOS)截图Demo
生活随笔
收集整理的這篇文章主要介紹了
(IOS)截图Demo
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
思路是建一個UIView的子類,獲取劃動出的矩形,用協議將矩形傳遞給代理對象,依據該矩形完成圖像數據的截取,并顯示出來。
截圖視圖類:
#import <UIKit/UIKit.h>@protocol UICutImgDelegate;@interface BIDCutView : UIView {CGPoint startPoint;CGRect targetRect;id <UICutImgDelegate> _delegate; } @property (assign , nonatomic) id delegate; @end@protocol UICutImgDelegate <NSObject> -(void)cutImgWithRect:(CGRect) aRect; -(void)clear; @end?
#import "BIDCutView.h"@implementation BIDCutView@synthesize delegate=_delegate;- (id)initWithFrame:(CGRect)frame {self = [super initWithFrame:frame];if (self) {// Initialization code }return self; }- (void)drawRect:(CGRect)rect {CGContextRef ctx = UIGraphicsGetCurrentContext();CGContextSetLineWidth(ctx, 1.5);CGContextSetStrokeColorWithColor(ctx, [UIColor purpleColor].CGColor);CGFloat lengths[2] = {15.0,5.0};CGContextSetLineDash(ctx, 2, lengths, 2);CGContextStrokeRect(ctx, targetRect); //畫虛線矩形 }-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {[self.delegate clear];startPoint=[[touches anyObject] locationInView:self]; }-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {CGPoint currentPoint=[[touches anyObject] locationInView:self];targetRect = CGRectMake(startPoint.x, startPoint.y, currentPoint.x-startPoint.x, currentPoint.y-startPoint.y);[self setNeedsDisplay]; }-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {if (self.delegate && [self.delegate respondsToSelector:@selector(cutImgWithRect:)]) {[self.delegate cutImgWithRect:targetRect];} }@end
?
視圖控制器:(作為截圖視圖的代理對象)
#import <UIKit/UIKit.h> #import "BIDCutView.h"@interface BIDRootViewController : UIViewController <UICutImgDelegate>@end?
#import "BIDRootViewController.h" #import "BIDSimpleTouchFun.h" #import "BIDDiscount.h"@implementation BIDRootViewController-(void)loadView {[super loadView];//self.view=[[[BIDDrawViewalloc] initWithFrame:CGRectMake(0, 0, 320, 460)] autorelease]; BIDCutView *cutView=[[BIDCutView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];cutView.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"abc.jpg"]];cutView.delegate = self;[self.view addSubview:cutView];[cutView release]; } - (void)viewDidLoad {[super viewDidLoad]; }- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning]; }-(void)cutImgWithRect:(CGRect)aRect {UIImage *img=[UIImage imageNamed:@"abc.jpg"];CGImageRef imgRef = img.CGImage;CGImageRef targetImgRef = CGImageCreateWithImageInRect(imgRef, aRect); //圖像的截取UIImage *targetImg=[UIImage imageWithCGImage:targetImgRef];UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, aRect.size.width, aRect.size.height)];imgView.image = targetImg; //把截取得的圖像顯示到視圖中去imgView.tag=1000;[self.view addSubview:imgView];[imgView release]; }-(void)clear {UIImageView *imgView=(UIImageView *)[self.view viewWithTag:1000];[imgView removeFromSuperview]; }
效果:?
轉載于:https://www.cnblogs.com/mingfung-liu/p/3230038.html
總結
以上是生活随笔為你收集整理的(IOS)截图Demo的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓修改默认音量
- 下一篇: 常用AT指令集 (转)