問題タブ [sizetofit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2571 参照

ios - 実行時および方向変更中のセンタリングとsizeToFitサブビュー

UIViewこれは、私がいくつかのサブビューを設定しているいくつかの問題の最初のものです。UIView実行時に画面上に動的に配置されるがあります。そのUIView(マスター)には、aとaUIViewをラップする別の(子)が含まれています。この取り決めのために私が持っている要件は次のとおりです。UIImageViewUILabel

  1. デバイスが回転するとき、子供UIViewはマスターの中心に留まらなければなりません。UIView
  2. のテキストはUILabel非常に長くても短くてUIViewもかまいませんが、画像とテキストを含む子は中央に配置したままにする必要があります。
  3. このシナリオを処理するためにUIViewをサブクラス化することは避けたいと思います。また、IBのいくつかの設定と、可能であれば少し強制的なサイズ変更コードを使用willRotateToInterfaceOrientation.して、これらすべてを処理したいフレーム/ポジショニングコードも避けたいと思います。autoresizingMask

これは、Interface Builderのコントロールの配置です(赤で強調表示されています)。

InterfaceBuilderの制御装置

Interface Builderでは、autoresizingMask説明されているコントロールのプロパティがそのように設定されています

  • UIView(マスター):柔軟な上マージン、柔軟な左マージン、柔軟な右マージン、柔軟な幅
  • UIView(子):柔軟な上マージン、柔軟な下マージン、柔軟な左マージン、柔軟な右マージン、柔軟な幅、柔軟な高さ。(なしを除くすべてのモード)
  • UIImageView:柔軟な右マージン
  • UILabel:柔軟な右マージン

これは、ポートレートモードで実行時にプログラムで追加された後のビュー(画像とテキストを含む赤いバー)です。

マスターUIViewの背景は明るい赤色の画像です。子供UIViewの背景はそれよりもわずかに暗く、UILabelの背景はさらに暗くなります。アプリが回転に反応したときに境界が見えるように、色を付けました。

ここに画像の説明を入力してください

私には次のことが明らかです。

  • 中央に配置されていませんが...
  • テキストをIBのデフォルト値から「このマップエクステントにデータがありません」から変更した後。「TEST1、123」へ。ラベルは正しく収縮します。

これは、縦向きで追加され、横向きモードに回転された後のビューです。

ここに画像の説明を入力してください

ここから私はそれを見ることができます:

  • それはまだ中央に配置されておらず、おそらく回転前の元のフレームの原点にあります
  • UIView(子)は、表示されるべきではないときに画面全体に表示されるように拡張されました。
  • UIView(マスター)が画面幅に合わせて適切に拡張されました。

これは私が今いる場所に私を導いたコードです。showNoDataStatusViewviewDidLoadからメソッドを呼び出します。

次の点に注意してください:

  • resizeToFitSubviewsは、を呼び出してもUIViewがサブビューに合わせて自動的にサイズ変更されないことがわかったときにUIViewに配置したカテゴリですsizeToFitこの質問、およびこの質問は問題を説明しました。以下のカテゴリのコードを参照してください。
  • このすべてのロジックを処理するUIViewサブクラスを作成することを考えましたが、やり過ぎのようです。これをIBに配置するのは簡単なはずですよね?
  • 本のすべてのサイズ変更マスク設定を設定し、ラベルとビューのサイズ変更が発生する順序と、マスタービューがサブビューとして追加されるポイントを調整してみました。毎回奇妙な結果が出るので、何も機能していないようです。

UIView resizeToFitSubviewsカテゴリの実装方法:

私が知りたいのは、UIViewスーパービューがビュー階層に追加された後、(子)が適切に中央に配置されない理由です。適切な幅になっているように見えますが、ラベルに「このマップ範囲にデータがありません」と表示されたときに、IBで持っていたフレームが何とか保持されています。

また、デバイスの回転後に中央に配置されない理由と、ここで採用しているアプローチが賢明かどうかも知りたいです。おそらくこれが私が抱えている他の問題を引き起こしています。ここでのUIViewレイアウトのヘルプは大歓迎です。

ありがとう!

0 投票する
3 に答える
1085 参照

ios - UILabel を別の UILabel の真下に配置する

NSString読み込まれているテキストに応じてを自動的にサイズ変更する追加機能がありますUILabel(引用を表示する単純なアプリがあるため、いくつかの単語、いくつかの文です)。quoteそのラベルの下にはauthor、(奇妙なことに) 引用の著者が含まれるラベルもあります。

authorそのラベルをラベルのすぐ下に配置しようとしていますquote(そのy座標は、quoteラベルのy座標にquoteラベルのheight. 、サイズが変わります。引用符が小さいほどスペースが多く、引用符が長いほどスペースが少なくなります。

ここに画像の説明を入力 ここに画像の説明を入力

layer.borderColor/borderWidth赤と青のボックス (アプリで表示できるように設定したもの) の間のギャップは、見積もりが短いほど大きくなります。

誰かが以下のコードをふるいにかけて、不一致の原因を正確に指摘するのを手伝ってくれるなら、本当に感謝しています. 私が見る限り、authorラベルは常にquoteラベルのy + height値の 35 ピクセル下にある必要があります。

確認のために: すべてが Interface Builder などで正しく接続されています。引用の内容はそこにうまく入っており、他のすべてが機能しているため、接続されています。それは問題ではありません。

明確にするために、私の質問は次のとおりです。引用符の長さに応じてラベル間のギャップが変化するのはなぜですか?35ピクセルの安定した設定可能なギャップを正しく取得するにはどうすればよいですか?

ラベルを配置するために使用しているコードは次のとおりです。

のカスタムメソッドは次のsizeToFitMultipleLinesとおりです。

そして、ここに私のfontSizeWithFont:constrainedToSize:minimumFontSize:方法があります:

0 投票する
2 に答える
206 参照

ios - sizeToFit は適切なサイズをどのように決定しますか?

ユーザーが自由にパレットと呼ぶものを追加できるアプリがあります。項目 ( UIViews) は、あるパレットから別のパレットにドラッグできます。sizeToFitアイテムが追加または削除されたときにパレットのサイズを自動的に変更する方法を使用できると思いましたが、サイズ変更は行われていないようです。

ドキュメントには、サブビューに合わせてメソッドのサイズが最も適切なサイズに変更されると記載されています。UIViewsプログラムで追加することは含まれませんか?

sizeToFit組み込みのメソッドを動作させることができれば、独自のメソッドを作成する必要はありません。しかし、それは何もしていないようです。私が試したコードは次のとおりです。

サブビューを追加する前後のサイズは同じです。追加されるサブビューは、このテストを実行した時点で唯一のサブビューであり、サブビューのサイズは移動先のパレットのサイズの約 5% です。では、なぜビューのサイズが変更されないのでしょうか? 自分でやる必要がありますか?

0 投票する
5 に答える
5741 参照

ios - スクロール時にUILabel SizeToFitを使用したUITableViewが混乱する

こんにちは、私の問題がありtableviewます。セルをuilabelで作成し、セットの高さをSizeToFit計算します。UILabeltableView

私のTableViewVell方法は次のとおりです。

セルの高さは正しいサイズのままUILabelです...これはビューをロードしたときの結果です:

最初のスクリーンショット

そして、これはTableViewのスクロールを開始した後です:

2 番目のスクリーンショット

何か助けて???

0 投票する
2 に答える
1035 参照

ios - 動的な高さの UILabel は、画面外に移動した後に機能します

UITableViewCells で複数行の動的 UILabels を作成しようとしています。「コメント」ラベルを持つカスタム UITableViewCell があります。ストーリーボードにセルとラベルを作成します。

UILabel に格納される複数行のデータに基づいて、UITableViewCells の高さを適切に計算できます (heightForRowAtIndexPath を使用)。ただし、私の問題は実際の UILabel コンテンツにあります。UILabel コンテンツは、テーブルの読み込み時に 1 行のデータのみを表示します。ただし、複数行の UILabel データを含むセルが画面外に移動して画面に戻ると、複数行の UILabel に複数行のデータが正しく表示されます。テーブルの読み込み時に複数行のデータが正しく表示されるように、これを修正する方法はありますか?

ありがとう!

0 投票する
2 に答える
1055 参照

ios - UILabel を垂直方向に揃えようとすると sizeToFit が機能しないのはなぜですか? 中心に留まっているだけです

UILabel 内でテキストを垂直方向に揃える方法についてのアドバイスを求めてこの投稿を読んでいましたが、一番上のコメントが優れた解決策を示しているようでした。

UILabel行数を 0 に設定しています。次に、viewDidLoadView Controller の一部であり、それを呼び出しsizeToFitましたが、まだ真ん中しか占めていません。

Interface Builder では次のようになります。

ここに画像の説明を入力

実行するとまったく同じように見えますが、できればそのアウトラインボックスの上部に非常に近くしたいのに、テキストはナビゲーションバーからまだ離れています。

私は何を間違っていますか?

0 投票する
2 に答える
3703 参照

ios - UITextViewのサイズ変更 - 高さが調整されない

これはとても簡単なはずですが、何らかの理由でうまくいきません。テキスト ボックスのサイズを変更し、理想的には下部にパディングを入れたいと考えています。とりあえず適当にリサイズしてみます。

セットアップ

ストーリーボードの単一ビュー

インターフェース

実装

フレームの高さを変更したり、ここで他のユーザーの提案を変更したりするなど、いくつかの異なる解決策を試しました...

これはios7とxcode 5を使用していますが、なぜそのような基本的な機能に問題があるのか​​ わかりません。

混乱を招くために、sizeToFit の後にフレームの高さと contentsize を記録しました。私の結果は次のとおりです。

したがって、フレームは正しい高さを明確に認識していますが、ディスプレイではすべてのテキストが切り取られ、ボックスのサイズが調整されません。