在UIView中裁剪需要位置生成图片

新年快乐 ,新年快乐~

已经大年初六了,今年回家感觉倍儿的累,每天就能睡5、6个小时。虽然很累,但是我的体重却增加了,这会是新年的礼物么?委屈


前言:之前的项目用到了,在相册中选取图片,然后由用户调到适合位置,截取图片,传递到相关页面。

这个功能其实相对还是比较简单的,苹果给我们做了很好的封装,写了个demo,一起来看看代码吧~。


#import "ViewController.h"

@interface ViewController (){
    UIImageView *_imgV_Top;//上半部分原始图片
    UIImageView *_imgV_Down;//下半部分分切图后的效果图
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor whiteColor];
    [self makeUI];
    // Do any additional setup after loading the view, typically from a nib.
}

#pragma mark 布局
- (void)makeUI{
    //点击截图的按钮
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn.frame = CGRectMake(10, 64, 45, 30);
    [btn setTitle:@"切图" forState:UIControlStateNormal];
    [btn addTarget:self action:@selector(cutBtnDown) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
    
    //上部imgV
    _imgV_Top = [[UIImageView alloc] initWithFrame:CGRectMake(0, btn.frame.size.height+btn.frame.origin.y+20, self.view.frame.size.width, 200)];
    _imgV_Top.image = [UIImage imageNamed:@"2222.png"];
    [self.view addSubview:_imgV_Top];
    
    //下部imgV
    _imgV_Down = [[UIImageView alloc] initWithFrame:CGRectMake(0, _imgV_Top.frame.size.height+_imgV_Top.frame.origin.y+20, self.view.frame.size.width, 200)];
    [self.view addSubview:_imgV_Down];
}

- (void)cutBtnDown{
    _imgV_Down.image = [self cutUIimage];
}

#pragma mark 下一步时裁剪
- (UIImage*)cutUIimage{
    /*  
        _imgV_Top.frame.size 是控制矩形大小
        NO,YES 是控制是否透明
        2.0是清晰度 有人说0.0是自动没有感觉,可手动调试
     */
    UIGraphicsBeginImageContextWithOptions(_imgV_Top.frame.size, NO, 2.0);
    [_imgV_Top.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    return image;// 生成后
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

效果图如下:

图一:点击截图之前


图二:为点击之后的效果



------------------------------------------------------------------------------------

如果你想把截图的范围改变成为需要的位置-那就需要改变需求的size (比如把_imgV_Top 改成 self.view 试试)





感谢观看,学以致用更感谢~




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值