'Convert Swift graphics code to UIKit in Xamarin iOS C#

I need to crop an image to a circle in my Xamarin app. This is platform-dependent, so it'd have to use the UIKit.

I've found the following Swift code (credit Cut a UIImage into a circle):

extension UIImage {
    var isPortrait:  Bool    { size.height > size.width }
    var isLandscape: Bool    { size.width > size.height }
    var breadth:     CGFloat { min(size.width, size.height) }
    var breadthSize: CGSize  { .init(width: breadth, height: breadth) }
    var breadthRect: CGRect  { .init(origin: .zero, size: breadthSize) }
    var circleMasked: UIImage? {
        guard let cgImage = cgImage?
            .cropping(to: .init(origin: .init(x: isLandscape ? ((size.width-size.height)/2).rounded(.down) : 0,
                                              y: isPortrait  ? ((size.height-size.width)/2).rounded(.down) : 0),
                                size: breadthSize)) else { return nil }
        let format = imageRendererFormat
        format.opaque = false
        return UIGraphicsImageRenderer(size: breadthSize, format: format).image { _ in
            UIBezierPath(ovalIn: breadthRect).addClip()
            UIImage(cgImage: cgImage, scale: format.scale, orientation: imageOrientation)
            .draw(in: .init(origin: .zero, size: breadthSize))
        }
    }
}

Could you help me convert it into UIKit C#?
Thanks!

P.S. There were no relevant replies, so to the best of my abilities I've put together a version that works. See that below.



Solution 1:[1]

For a circular image I recommend using - FFImageLoading

else trough xaml:

<Image Source="Image">
          <Image.Clip>
                <EllipseGeometry Center="30,30">
                    <EllipseGeometry.RadiusX>
                        <OnPlatform x:TypeArguments="x:Double"
                                    iOS="30"
                                    Android="0"/>
                    </EllipseGeometry.RadiusX>
                    <EllipseGeometry.RadiusY>
                        <OnPlatform x:TypeArguments="x:Double"
                                    iOS="30"
                                    Android="0"/>
                    </EllipseGeometry.RadiusY>
                </EllipseGeometry>
          </Image.Clip>
</Image>

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1