如何在SwiftUI中遮罩/剪切图像的底部?

时间:2019-07-23 08:37:22

标签: swiftui

目前在SwiftUI中屏蔽图像似乎非常容易,并且可以使用以下方法实现:

.clipShape(RoundedRectangle(cornerRadius:20,
                                        style: .continuous))

,甚至.mask()。是否有一种方法可以通过指定.center.bottom等来控制掩盖图像的哪一部分?到目前为止,我一直在研究偏移量,但是我想知道是否有更简单的方法。

2 个答案:

答案 0 :(得分:1)

Swift 1.0

您可以将填充与形状结合在一起。这可能是您正在寻找的更简单的方法?

Image("profile")
    // Add padding to sides of the shape to control what is masked
    .mask(Rectangle().padding(.bottom, 20))
    .border(Color.orange)

(摘自《 SwiftUI视图》一书) SwiftUI Views Book Page

答案 1 :(得分:0)

.clipShape()需要一个形状,因此,如果您要经常修剪底部,则可以创建一个临时形状。像这样:

import SwiftUI

struct ContentView: View {
    var body: some View {
        Image("mypic")
            .aspectRatio(contentMode: .fit)
            .clipShape(BottomClipper(bottom: 100))
    }
}

struct BottomClipper: Shape {
    let bottom: CGFloat

    func path(in rect: CGRect) -> Path {
        Rectangle().path(in: CGRect(x: 0, y: rect.size.height - bottom, width: rect.size.width, height: bottom))
    }
}