UIPasteboard (粘贴板、剪切板使用)



static NSString *pasteBoardName = @"text.Board";

@interface ViewController (){
    UIButton *imageBtn;
    NSUInteger index;
    UIButton *pasteView;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    UIFont *fontSize = [UIFont boldSystemFontOfSize:22];
    
    imageBtn = [[UIButton alloc]initWithFrame:CGRectMake(120, 40, 80, 80)];
    [imageBtn setTitle:@"shareLine" forState:UIControlStateNormal];
    [imageBtn setBackgroundImage:[UIImage imageNamed:@"shareLine"] forState:UIControlStateNormal];
    [self.view addSubview:imageBtn];
    
    UIButton *btn1 = [[UIButton alloc]initWithFrame:CGRectMake(120, 150, 100, 35)];
    [btn1 setTitle:@"复制图片" forState:UIControlStateNormal];
    [btn1 setTitleShadowColor:[UIColor redColor] forState:UIControlStateNormal];
    btn1.tag = 1;
    btn1.titleLabel.font = fontSize;
    [btn1 setBackgroundColor:[UIColor lightGrayColor]];
    [btn1 addTarget:self action:@selector(copyImg:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn1];
    
    
    UIButton *btn2 = [[UIButton alloc]initWithFrame:CGRectMake(230, 150, 100, 35)];
    [btn2 setTitle:@"复制文字" forState:UIControlStateNormal];
    [btn2 setBackgroundColor:[UIColor lightGrayColor]];
    btn2.tag = 2;
    [btn2 setTitleShadowColor:[UIColor redColor] forState:UIControlStateNormal];
    btn2.titleLabel.font = fontSize;
    [btn2 addTarget:self action:@selector(copyImg:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn2];
    
    UIButton *btn3 = [[UIButton alloc]initWithFrame:CGRectMake(10, 150, 100, 35)];
    [btn3 setTitle:@"粘贴" forState:UIControlStateNormal];
    btn3.titleLabel.font = fontSize;
    [btn3 setBackgroundColor:[UIColor lightGrayColor]];
    [btn3 setTitleShadowColor:[UIColor redColor] forState:UIControlStateNormal];
    [btn3 addTarget:self action:@selector(openActivity:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn3];
    

}

#pragma mark
#pragma mark - 复制
-(void)copyImg:(UIButton*)btn
{
    UIPasteboard *appPasteBoard = [UIPasteboard pasteboardWithName:pasteBoardName create:YES];
    
    switch (btn.tag) {
        case 1:
            
            /*方法1、转为data保存到剪切板
             * @prame forPasteboardType public.JPEG / public.jpeg / public.png / public.tiff
             */
            [appPasteBoard setData:UIImageJPEGRepresentation([UIImage imageNamed:@"shareLine"] , 1.0) forPasteboardType:@"public.JPEG"];
            break;
            
        case 2:
            //复制文字
            appPasteBoard.string = imageBtn.titleLabel.text;
            break;
            
        default:
            break;
    }
    
    index = btn.tag;
    
}



#pragma mark - 粘贴
-(void)openActivity:(UIButton*)btn
{
    

    UIPasteboard *appPasteBoard =
    [UIPasteboard pasteboardWithName:pasteBoardName create:YES];
    
    //获取当前剪切板数据类型数组 [pasteboardTypes]
    NSArray *ary = appPasteBoard.pasteboardTypes;
    
    
    //是否包含指定类型数据
    BOOL b = [appPasteBoard containsPasteboardTypes:@[@"public.JPEG"]];
    
    
    //获取数据类型数组
    NSUInteger num = appPasteBoard.numberOfItems;
    

    //NSIndexSet
    NSIndexSet *set = [appPasteBoard itemSetWithPasteboardTypes:ary];
    NSLog(@"%@",set);
    
    
    
    
    
    if (!pasteView)
    {
        pasteView = [[UIButton alloc]initWithFrame:CGRectMake(120, 220, 80, 80)];
        [pasteView setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
        [self.view addSubview:pasteView];
    }
    
    
    switch (index) {
        case 1:
            //方法1、获取剪切板 data类型
            //@prame forPasteboardType 两边复制和粘贴约定好的类型字符串,可以任意
            //    NSData *data =[appPasteBoard dataForPasteboardType:@"public.jpeg"];
            //    [pasteView setImage:[UIImage imageWithData:data] forState:UIControlStateNormal];
            
            //方法2、获取原图
            [pasteView setTitle:nil forState:UIControlStateNormal];
            [pasteView setImage:appPasteBoard.image forState:UIControlStateNormal];
            break;
            
        case 2:
            [pasteView setImage:nil forState:UIControlStateNormal];
            [pasteView setTitle:appPasteBoard.string forState:UIControlStateNormal];
            break;
        default:
            break;
    }
    
    


}


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值