程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 截取屏幕並且保存到相冊

截取屏幕並且保存到相冊

編輯:C++入門知識

截取屏幕並且保存到相冊


- (void)viewDidLoad
{
    [super viewDidLoad];
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeContactAdd];
    btn.center = CGPointMake(100, 200);
    [btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
    
    myview = [[UIImageView alloc]initWithFrame:CGRectMake(10, 30, 300, 200)];
    [self.view addSubview:myview];
    
    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(20, 40, 280, 30)];
    label.text = @"我是黃成都,這是我的截屏保存演練";
    [self.view addSubview:label];
}

-(void)btnClick
{
    UIImage *image = [self makeImageWithView:self.view];
    myview.image = image;
    
    [self saveImageToPhotos:image];
}

//截屏
- (UIImage *)makeImageWithView:(UIView *)view
{
    CGSize s = view.bounds.size;
    // 下面方法,第一個參數表示區域大小。第二個參數表示是否是非透明的。如果需要顯示半透明效果,需要傳NO,否則傳YES。第三個參數就是屏幕密度了,關鍵就是第三個參數。
    
//    float scale = [[UIScreenmainScreen] scale];//得到設備的分辨率
//    scale = 1; 的時候是代表當前設備是320*480的分辨率(就是iphone4之前的設備)
//    scale = 2; 的時候是代表分辨率為640*960的分辨率
    NSLog(@"%f",[UIScreen mainScreen].scale);
    //繪圖
    UIGraphicsBeginImageContextWithOptions(s, NO, [UIScreen mainScreen].scale);
    //渲染
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    //生產圖片
    UIImage*image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

//保存圖片到相框
- (void)saveImageToPhotos:(UIImage *)savedImage

{
    
//    image
//    要保存到用戶設備中的圖片
//    completionTarget
//    當保存完成後,回調方法所在的對象
//    completionSelector
//    當保存完成後,所調用的回調方法。 形式如下:
//    - (void) image: (UIImage *) image
//didFinishSavingWithError: (NSError *) error
//contextInfo: (void *) contextInfo;
//    contextInfo
//    可選的參數,保存了一個指向context數據的指針,它將傳遞給回調方法。
    UIImageWriteToSavedPhotosAlbum(savedImage,self, @selector(image:didFinishSavingWithError:contextInfo:),NULL);
    
}

- (void)image: (UIImage *) image didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo

{
    
    NSString *msg = nil ;
    
    if(error != NULL){
        
        msg = @"保存圖片失敗" ;
        
    }else{
        
        msg = @"保存圖片成功" ;
        
    }
    NSLog(@"%@", msg);
    
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved