Swift UIView 截图、圆角处理
发布时间:2020-12-14 06:21:06 所属栏目:百科 来源:网络整理
导读:// MARK: Roundpublic extension UIView { public func round(byRoundingCorners: UIRectCorner = UIRectCorner.allCorners,cornerRadi: CGFloat) { self.round(byRoundingCorners: byRoundingCorners,cornerRadii: CGSize(width: cornerRadi,height: corner
// MARK: Round public extension UIView { public func round(byRoundingCorners: UIRectCorner = UIRectCorner.allCorners,cornerRadi: CGFloat) { self.round(byRoundingCorners: byRoundingCorners,cornerRadii: CGSize(width: cornerRadi,height: cornerRadi)) } public func round(byRoundingCorners: UIRectCorner = UIRectCorner.allCorners,cornerRadii: CGSize) { guard let maskLayer = self.layer.mask else { let rect = self.bounds let bezierPath = UIBezierPath(roundedRect: rect,byRoundingCorners: byRoundingCorners,cornerRadii: cornerRadii) defer { bezierPath.close() } let shapeLayer = CAShapeLayer() shapeLayer.path = bezierPath.cgPath self.layer.mask = shapeLayer self.layer.masksToBounds = true return } } } // MARK: UIView 快照 public extension UIView { public var snapshotImage: UIImage? { return snapshot() } public func snapshot(rect: CGRect = CGRect.zero,scale: CGFloat = UIScreen.main.scale) -> UIImage? { var snapRect = rect if __CGSizeEqualToSize(rect.size,CGSize.zero) { snapRect = calculateSnapshotRect() } UIGraphicsBeginImageContextWithOptions(snapRect.size,false,scale) defer { UIGraphicsEndImageContext() } self.drawHierarchy(in: snapRect,afterScreenUpdates: false) return UIGraphicsGetImageFromCurrentImageContext() } // 计算UIView所显示内容Rect func calculateSnapshotRect() -> CGRect { var targetRect = self.bounds if let scrollView = self as? UIScrollView { let contentInset = scrollView.contentInset let contentSize = scrollView.contentSize targetRect.origin.x = contentInset.left targetRect.origin.y = contentInset.top targetRect.size.width = targetRect.size.width - contentInset.left - contentInset.right > contentSize.width ? targetRect.size.width - contentInset.left - contentInset.right : contentSize.width targetRect.size.height = targetRect.size.height - contentInset.top - contentInset.bottom > contentSize.height ? targetRect.size.height - contentInset.top - contentInset.bottom : contentSize.height } return targetRect } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |