1. 程式人生 > >iPhoneX截圖如何帶“劉海”和圓角

iPhoneX截圖如何帶“劉海”和圓角

直接用iPhoneX截圖後是沒有圓角和劉海的,就像下面這樣。


其實加圓角和劉海也很簡單

第一步:截圖

第二步:開啟我這個軟體,並選取圖片庫中的那張圖

第三步:新增圓角,劉海

第四步:將做好的圖片儲存到相簿

還需要下邊這張劉海的圖片


可以上程式碼了(目前原圖是固定的,沒有從圖片庫選取)

//
//  ViewController.m
//  iPhoneXPhotoEdit
//
//  Created by yfc on 2017/12/23.
//  Copyright © 2017年 yfc. All rights reserved.
//

#import "ViewController.h"
#import <AssetsLibrary/AssetsLibrary.h>
#import <Photos/Photos.h>
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    UIButton *btn = [[UIButton alloc]init];
    btn.frame = CGRectMake(10, 44, 350, 758);
    btn.frame = CGRectMake(0, 0, 375, 812);
    [btn setBackgroundImage:[UIImage imageNamed:@"IMG_3655.PNG"] forState:UIControlStateNormal];
    //新增圓角
    btn.layer.cornerRadius = 35 ;
    btn.layer.borderColor = [UIColor blackColor].CGColor;
    btn.layer.borderWidth = 2;
    [self.view addSubview:btn];
    btn.backgroundColor = [UIColor whiteColor];
    btn.clipsToBounds = YES;
    
    
    //新增劉海
    UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"liuhai.png"]];
    imageView.frame = CGRectMake(70, 0, 222, 28);
    [btn addSubview:imageView];
    
    self.view.backgroundColor = [UIColor clearColor];
    
    //截圖儲存到相簿
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [self saveBtnAction:nil];
    });
    
}
-(void)saveBtnAction:(UIButton *)sender{
    [self requestAuthorizationStatus];
}
//檢視許可權
- (void)requestAuthorizationStatus
{
    [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status){
        dispatch_async(dispatch_get_main_queue(), ^{
            switch (status) {
                case PHAuthorizationStatusAuthorized:
                {
                    [self cutScreen];
                    break;
                }
                default://Denied
                {
                    break;
                }
            }
        });
    }];
}
//截圖
-(void)cutScreen{

    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, YES, 0.0);
    //2.獲取當前圖形上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //3.獲取需要擷取的view的layer
    [self.view.layer renderInContext:ctx];
    //4.從當前上下文獲取圖片
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    //5.關閉圖形上下文
    UIGraphicsEndImageContext();
    //6.把圖片儲存到相簿
    UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);

}
//儲存成功後回撥
-(void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{
    NSString *msg = nil;
    if (error) {
        msg = @"圖片儲存失敗";
    }else{
        msg = @"圖片儲存成功";
    }
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:msg delegate:self cancelButtonTitle:@"確定" otherButtonTitles:nil, nil];
    [alertView show];
}
@end

效果圖是