简体   繁体   English

在图像视图上快速创建倾斜的切割

[英]Create slanted cut on image view swift

I have been looking around the internet and I can't find a good solution for making a slanted cut on an image view that works for swift. 我一直在互联网上四处逛逛,但找不到在快速显示的图像视图上进行倾斜切割的好方法。

Here is what I want 这就是我想要的
在此处输入图片说明

As you can see I would like to slant an image view as seen in the background. 如您所见,我想倾斜在背景中看到的图像视图。 If anyone had some thoughts or solutions, that would be much appreciated. 如果有人有任何想法或解决方案,将不胜感激。

Properties: 属性:

fileprivate var headerView: PostHeaderView!
fileprivate var headerMaskLayer: CAShapeLayer!

In viewDidLoad(): 在viewDidLoad()中:

headerMaskLayer = CAShapeLayer()
    headerMaskLayer.fillColor = UIColor.black.cgColor
    headerView.layer.mask = headerMaskLayer

    updateHeaderView()

Then use this function: 然后使用此功能:

func updateHeaderView() {
    let effectiveHeight = Storyboard.tableHeaderHeight - Storyboard.tableHeaderCutAway / 2

    var headerRect = CGRect(x: 0, y: -effectiveHeight, width: tableView.bounds.width, height: Storyboard.tableHeaderHeight)

    headerView.logoImageView.alpha = 0

    if tableView.contentOffset.y < -effectiveHeight {
        headerRect.origin.y = tableView.contentOffset.y
        headerRect.size.height = -tableView.contentOffset.y + Storyboard.tableHeaderCutAway/2

        let final: CGFloat = -100
        let alpha =  min((tableView.contentOffset.y + effectiveHeight) / final, 1)
        headerView.logoImageView.alpha = alpha
    }

    headerView.frame = headerRect

    // cut away
    let path = UIBezierPath()
    path.move(to: CGPoint(x: 0, y: 0))
    path.addLine(to: CGPoint(x: headerRect.width, y: 0))
    path.addLine(to: CGPoint(x: headerRect.width, y: headerRect.height))
    path.addLine(to: CGPoint(x: 0, y: headerRect.height - Storyboard.tableHeaderCutAway))
    headerMaskLayer?.path = path.cgPath
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM