swift -> UIView 转 UIImage 并 保存

方法

    func viewToImg(v:UIView)->UIImage{
        UIGraphicsBeginImageContext(v.bounds.size);
        v.layer.render(in: UIGraphicsGetCurrentContext()!);
        let img:UIImage = UIGraphicsGetImageFromCurrentImageContext()!;
        UIGraphicsEndImageContext();
        return img;
    }

图片模糊问题

UIGraphicsBeginImageContext(v.bounds.size);
改成
//是否透明, 屏幕密度(UIScreen.main.scale)
UIGraphicsBeginImageContextWithOptions(v.bounds.size, true, UIScreen.main.scale*0.9)

使用 .

        let l = UIView(frame: CGRect(x: 60, y: 100, width: 100, height: 100));
        l.backgroundColor = UIColor.blue;
        
        let t = UILabel(frame: CGRect(x: 20, y: 20, width: 50, height: 50));
        t.backgroundColor = UIColor.gray;
        t.text = "F";
        t.font = UIFont.systemFont(ofSize: 20);
        t.alpha  = 0.5
        l.addSubview(t)
        self.view.addSubview(l);
        
        
        ///
        
        let img = viewToImg(v: l);
        let dt:String = NSHomeDirectory().appending("/Documents/").appending("2.png") as String;
        print(dt);
        try? UIImagePNGRepresentation(img)?.write(to: URL(fileURLWithPath: dt))
      
        

猜你喜欢

转载自mft.iteye.com/blog/2378916