UI知识小集

2018-01-02  本文已影响10人  笑熬齊澄

1.屏幕截图

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        // 1. 创建一个与控制器view一样大的图形上下文

        UIGraphicsBeginImageContextWithOptions(self.view.frame.size, NO, 0.0);

        // 1.1 获取当前上下文

        CGContextRef ctx = UIGraphicsGetCurrentContext();

        // 2. 把控制器的view中的内容渲染到上下文中

        [self.view.layer renderInContext:ctx];

        // 3. 从上下文中获取图片

        UIImage* img = UIGraphicsGetImageFromCurrentImageContext();

        // 4. 关闭上下文

        UIGraphicsEndImageContext();

        // 5. 把屏幕截图保存到相册

        UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil);

    });

2.图片加水印

   // 1. 加载原图

    UIImage* img = [UIImage imageNamed:@"imageName"];

    // 2. 根据原图的大小, 创建一个Bitmap的图形上下文

    UIGraphicsBeginImageContextWithOptions(img.size, NO, 0.0);

    // 3. 把原图绘制到上下文中

    [img drawAtPoint:CGPointZero];

    // 4. 绘制水印(水印文字、水印图片)

    // 4.1 绘制水印文字

    NSString* strMsg = @"水印文字";

    NSDictionary* attrs = @{

        NSFontAttributeName : [UIFont systemFontOfSize:25],

        NSForegroundColorAttributeName : [UIColor redColor]

    };

    [strMsg drawAtPoint:CGPointMake(30, 30) withAttributes:attrs];

    // 4.2 绘制图片水印

    // 4.2.1 加载水印图片

    UIImage* imgWatermark = [UIImage imageNamed:@"logo"];

    CGFloat margin = 20;

    CGFloat w = 200;

    CGFloat h = 80;

    CGFloat x = img.size.width - w - margin;

    CGFloat y = img.size.height - h - margin;

    [imgWatermark drawInRect:CGRectMake(x, y, w, h)];

    // 5. 从上下文中取出绘制好的图片

    UIImage* imgFinal = UIGraphicsGetImageFromCurrentImageContext();

    // 6. 关闭上下文

    UIGraphicsEndImageContext();

    // 7. 保存图片

    UIImageWriteToSavedPhotosAlbum(imgFinal, nil, nil, nil);

上一篇下一篇

猜你喜欢

热点阅读