Malert
Malert copied to clipboard
Issue in landscape mode
I have a following issue when my app goes to landscape mode. Do you have any suggestions?
I would like alert to be a fixed width instead of going almost entire width of the screen. Thanks
Hi @nemanja-nisic, I'm glad that you are using Malert!
Malert does not have this support to set Alert's width, because Malert has an adaptive and flexible layout.
I was thinking here and we can provide a landscape and a portrait margin to be set. Does this approach help you?
Hi @vitormesquita Im sorry for the late reply. It could, as long as the margin applies to the entire malert view.
Just had the same issue with landscape mode so I did a small adjustment in MalertPresentTransitioning.swift
file and now at least it doesn't take all the screen height and works for me as expected. Maybe someone will helps this.
extension UIWindow {
static var isLandscape: Bool {
if #available(iOS 13.0, *) {
return UIApplication.shared.windows
.first?
.windowScene?
.interfaceOrientation
.isLandscape ?? false
} else {
return UIApplication.shared.statusBarOrientation.isLandscape
}
}
}
class MalertPresentTransitioning: BaseTransitioning, UIViewControllerAnimatedTransitioning {
let containerHeight: CGFloat = 300
var originFrame: CGRect {
switch UIDevice.current.userInterfaceIdiom {
case .phone:
if UIWindow.isLandscape {
return CGRect(
x: UIScreen.main.bounds.minX,
y: UIScreen.main.bounds.midY - containerHeight / 2,
width: UIScreen.main.bounds.width,
height: containerHeight)
} else {
return UIScreen.main.bounds
}
case .pad:
return CGRect(
x: UIScreen.main.bounds.minX,
y: UIScreen.main.bounds.midY - containerHeight / 2,
width: UIScreen.main.bounds.width,
height: containerHeight)
default:
return UIScreen.main.bounds
}
}
}