2017-07-15 6 views
0

UIViewで面積を計算する必要があるコードを作成しています。私はUIViewを取ってUIのコントロールを置くために利用可能なスペースの量を決定することができる必要があります。だから、UIViewの幅が何であれ、多分それは724ptなので、その値を100%に変換する必要があります。ここでのトリックは、UIViewの幅を取得している値です。タイプはIntです。この値は、UIViewが計算されるポイントの数をスーパービューと比較して表しますが、これをのマイナスのスペースの割合を表すCGFloatに変換するように求められています。UIViewのスーパービュー最も右の境界、最も左の境界、またはその両方のスーパービューです。したがって、ビューを半分に分割したい場合は、半分の幅(362pt)に対して100%(724)とリターン50%を取るだけです。これはIntからCGFloatに変換する必要があります。スイフト4:数値を100%に変換する

は、私は何を探していますと、あなたはそれがこの複雑にする必要はありませんスウィフト4.

+2

これはスウィフトではなく、ジオメトリです。ビューのフレームである2つのディメンションでは、幅と高さ(正方形のポイント?)です。ビューの幅が724の場合、724 **は** 100%です。サブビューの幅を合計し、その合計を724から減算します。残りは未使用のものです。したがって、あなたのサブビューの総数が362の場合、50%が使用され、残りの50%は残されます。私は明らかに何かが欠けている。何? – dfd

答えて

1

でこれを達成する方法についての式です。

あなたは、ビューの幅の50%をしたい場合は、単純に実行します。

let halfWidth = someView.frame.width * 0.5 

は何が必要パーセントと0.5を交換してください。

+0

@LeoDabus 'midX'は幅の半分を与えません、それはフレームの中央の位置を与えます。 xが100、幅が300のフレームの場合、midXは250、幅は* 0.5は明らかに150です。 – rmaddy

+0

@LeoDabusこれは特殊なケースです。そしてその疑問はちょうど1つの例として50%を与えるようです。 – rmaddy

+0

応答@rmaddyをありがとう。私はあなたが正しい軌道にいると信じているように簡単です。これはおそらく、私の心が今このことを考えているプレッツェルのように包まれており、その解決策が私を逃れさせるからです。複雑なUIをレイアウトするという私の要求が、コード内ですべてを行い、方向変更を処理する必要がない場合、私は自動レイアウトを使用してこれを行うでしょう。しかし私は幾何学的には決して偉大ではなかったそして、私はすぐに書かれた質問のために謝罪します。私のやや複雑で難しい質問を十分に説明することはできませんでした。私は私の質問を編集しました。 –

関連する問題