私のアプリケーションでは、画像をタップして画像を拡大して画像をフルサイズで表示しています。異なる画像タイプに基づいて正しい画像の高さを取得する問題
理想的には、これは私が作業を取得したいものです。 (私はここにビデオを追加できませんでしたので、ここではそれへのリンクがあります) https://media.giphy.com/media/F7wCO7miVMG6k/source.mp4
はしかし、私は上の画像を表示することができますよ彼らの身長がそれほど高くないなら、正しいサイズ。
私は、正方形のイメージを持っているか、それは次のように画像が大きすぎ、画像が表示される場合:
:ここでは画像の表示方法を処理するコードです
var startingFrame: CGRect?
var blackBackgroundView: UIView?
var startingImageView: UIImageView?
func performZoomInForStartingImageView(startingImageView: UIImageView){
print("starting image view: ", startingImageView.bounds)
//startingImageView.sizeToFit()
self.startingImageView = startingImageView
self.startingImageView?.isHidden = true
startingFrame = startingImageView.superview?.convert(startingImageView.frame, to: nil)
print("starting frame: ", startingFrame!)
let zoomingImageView = UIImageView(frame: startingFrame!)
//zoomingImageView.backgroundColor = UIColor.red
zoomingImageView.image = startingImageView.image
print("zoom image view: ", zoomingImageView.bounds)
zoomingImageView.isUserInteractionEnabled = true
//zoomingImageView.autoresizingMask = [.flexibleWidth, .flexibleHeight, .flexibleBottomMargin, .flexibleRightMargin, .flexibleLeftMargin, .flexibleTopMargin]
//zoomingImageView.contentMode = UIViewContentMode.scaleAspectFit
zoomingImageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleZoomOut)))
if let keyWindow = UIApplication.shared.keyWindow {
print("key window frame: ", keyWindow.frame)
blackBackgroundView = UIView(frame: keyWindow.frame)
blackBackgroundView?.backgroundColor = UIColor.black
blackBackgroundView?.alpha = 0
keyWindow.addSubview(blackBackgroundView!)
keyWindow.addSubview(zoomingImageView)
UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
self.blackBackgroundView?.alpha = 1
print("keywindow frame width: ", keyWindow.frame.width)
print("keywindow frame height: ", keyWindow.frame.height)
print("\nstarting frame height: ", self.startingFrame!.height)
print("starting frame width: ", self.startingFrame!.width)
let height = (self.startingFrame!.height/self.startingFrame!.width) * keyWindow.frame.width
print("height in animate:", height)
//let height = self.startingFrame!.height * 2
zoomingImageView.frame = CGRect(x: 0, y: 0, width: keyWindow.frame.width, height: height)
print("zooming image view frame: ", zoomingImageView.frame)
zoomingImageView.center = keyWindow.center
}, completion: nil)
}
}
注:フレームで何が起こっていたかを正確に確認するために、一連の印刷文を追加しました。
私も自分の問題は、次の行で起こることに気づい:それは正しく、短い高さで画像が表示されますが、他の写真の高さが正しくないkeyWindow.frame.width
を使用することにより
let height = (self.startingFrame!.height/self.startingFrame!.width) * keyWindow.frame.width
。
私は行を変更した場合:
let height = (self.startingFrame!.height/self.startingFrame!.width) * keyWindow.frame.height
それは正しく正方形の画像を表示しますが、短い高さのないもの。
画像の高さを正確に検出し、高さに基づいて正しく表示するにはどうすればよいですか?
編集2:新しいログ
感謝コメントのために。アプリケーションはポートレートのみですが、画像は高さに基づいて正しく表示されません。 –
上記のように幅と高さの比率をチェックしてみましたか? – Akhilrajtr
はい私は上記のコードを試しましたが、画像はまだ間違って表示されています –