AssistoLab / DropDown

A Material Design drop down for iOS
MIT License
2.43k stars 623 forks source link

Top Safe Layout not support (Solution in Details Please update it) #298

Open vipinsaini0 opened 2 years ago

vipinsaini0 commented 2 years ago

I found this issue and also solved it here is the solution,

In DropDown.swift file

Add this code in this function.

func computeLayoutForTopDisplay(window: UIWindow) -> ComputeLayoutTuple

if #available(iOS 11.0, *) {
            windowYAix = window.safeAreaInsets.top
        } else {
            // Fallback on earlier versions
        }
        let windowY = windowYAix + DPDConstant.UI.HeightPadding

And After that look like this

fileprivate func computeLayoutForTopDisplay(window: UIWindow) -> ComputeLayoutTuple {
        var offscreenHeight: CGFloat = 0

        let anchorViewX = anchorView?.plainView.windowFrame?.minX ?? 0
        let anchorViewMaxY = anchorView?.plainView.windowFrame?.maxY ?? 0

        let x = anchorViewX + topOffset.x
        var y = (anchorViewMaxY + topOffset.y) - tableHeight
        var windowYAix = window.bounds.minY

        if #available(iOS 11.0, *) {
            windowYAix = window.safeAreaInsets.top
        } else {
            // Fallback on earlier versions
        }
        let windowY = windowYAix + DPDConstant.UI.HeightPadding

        if y < windowY {
            offscreenHeight = abs(y - windowY)
            y = windowY
        }

        let width = self.width ?? (anchorView?.plainView.bounds.width ?? fittingWidth()) - topOffset.x

        return (x, y, width, offscreenHeight)
    }
vipinsaini0 commented 2 years ago

Please update this in your project, so help others.