diff --git a/Framework/Sources/FloatingPanelSurfaceView.swift b/Framework/Sources/FloatingPanelSurfaceView.swift index c28c196..2af5367 100644 --- a/Framework/Sources/FloatingPanelSurfaceView.swift +++ b/Framework/Sources/FloatingPanelSurfaceView.swift @@ -169,15 +169,15 @@ public class FloatingPanelSurfaceView: UIView { } private func updateContentViewMask() { - guard - containerView.layer.cornerRadius != 0.0 - else { return } - + guard containerView.layer.cornerRadius != 0.0 else { + containerView.layer.masksToBounds = false + return + } + containerView.layer.masksToBounds = true if #available(iOS 11, *) { // Don't use `contentView.clipToBounds` because it prevents content view from expanding the height of a subview of it // for the bottom overflow like Auto Layout settings of UIVisualEffectView in Main.storyboard of Example/Maps. // Because the bottom of contentView must be fit to the bottom of a screen to work the `safeLayoutGuide` of a content VC. - containerView.layer.masksToBounds = true containerView.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] } else { // Don't use `contentView.layer.mask` because of a UIVisualEffectView issue in iOS 10, https://forums.developer.apple.com/thread/50854 diff --git a/Framework/Tests/FloatingPanelViewTests.swift b/Framework/Tests/FloatingPanelViewTests.swift index 0998730..55b316b 100644 --- a/Framework/Tests/FloatingPanelViewTests.swift +++ b/Framework/Tests/FloatingPanelViewTests.swift @@ -27,10 +27,30 @@ class FloatingPanelViewTests: XCTestCase { func test_surfaceView_cornderRaduis() { let surface = FloatingPanelSurfaceView(frame: CGRect(x: 0.0, y: 0.0, width: 320.0, height: 480.0)) XCTAssert(surface.cornerRadius == 0.0) - surface.containerView.layer.cornerRadius = 10.0 + XCTAssert(surface.containerView.layer.masksToBounds == false) + + surface.cornerRadius = 10.0 surface.layoutIfNeeded() XCTAssert(surface.cornerRadius == 10.0) XCTAssert(surface.containerView.layer.cornerRadius == 10.0) + XCTAssert(surface.containerView.layer.masksToBounds == true) + + surface.containerView.layer.cornerRadius = 12.0 + surface.layoutIfNeeded() + XCTAssert(surface.cornerRadius == 12.0) + XCTAssert(surface.containerView.layer.masksToBounds == true) + + surface.cornerRadius = 0.0 + surface.layoutIfNeeded() + XCTAssert(surface.cornerRadius == 0.0) + XCTAssert(surface.containerView.layer.cornerRadius == 0.0) + XCTAssert(surface.containerView.layer.masksToBounds == false) + + surface.containerView.layer.cornerRadius = 12.0 + surface.setNeedsLayout() + surface.layoutIfNeeded() + XCTAssert(surface.cornerRadius == 12.0) + XCTAssert(surface.containerView.layer.masksToBounds == true) } func test_surfaceView_border() {