私の仕事では、iOSアプリケーションを設計するのを手伝っているので、最近Swiftで作業を始めました。アプリでは、Googleマップ要素と2つのグラフの3つの要素があります。これらの要素のどれかを押すと、画面に合わせてサイズが変更され、画面を再び押すと元のサイズに戻るようにしたいと思います。スウィフト:異なるデバイスでプログラム的に要素のサイズを調べる
画面を塗りつぶすことは問題ありません。既に実装されています。しかし、もう一度押すと、その要素を実行するデバイスに応じて、元の要素よりも小さいか大きい要素が表示されます。現在、要素のheight属性とwidth属性を使用して最小化し、ユーザーがフルスクリーン要素を押したときにこれらの属性の元の値に戻すだけです。しかし、これらは、あなたのデバイスが何であれ動的に作成されるのではなく、ハードコードされているように見えます。これが元のサイズに正しく戻らない理由です。ここで
は、私は私のコードで持っているもの現在:
@IBAction func mapButtonClicked(sender: AnyObject) {
if mapExpanded == false {
mapView.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height)
mapButton.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height)
mapExpanded = true
} else {
mapView.frame = CGRectMake(0, 0, oldMapWidth, oldMapHeight)
mapButton.frame = CGRectMake(0, 0, oldMapWidth, oldMapHeight)
mapExpanded = false
}
}
どこoldMapWidth = self.view.mapView.widthとoldMapHeight = self.view.mapView.height。
これは画面に対してサイズを変更しようとしましたが、1つのデバイスでのみ動作し、別のタブレットに切り替えるときに同じ問題が発生します。コンパイル後の高さと幅を提供する別の属性があるので、それが現在のデバイスに対して正しいでしょうか?
oldMapHeightとwidthは、あなたが期待しているものですか?初めてmapButtonを押したときにログイベントを作成し、現在のビューの幅と高さを記録し、それらを2つの変数に格納したものと比較します。私は彼らが異なるだろうと思っています...最も簡単な解決策は、フルスクリーンを作る直前にmapButtonClick内にこれらの2つの変数を設定することです。その後、どのデバイスに関係なく、正常に動作するはずです。 – Putz1103
彼らは私が思うものではありませんでした。ストーリーボード上の任意のビューのサイズは、デバイスを実際に実行しているときとは異なります。しかし、見ていただきありがとうございます。 – tdolphay
質問は17分後に私はコメントして、あなたにアドバイスをした(回答者はほとんどそのままと思われる)。 – Putz1103