問題タブ [autoresizingmask]
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.
ios - プログラムによるマスクの自動サイズ変更 vs Interface Builder / xib / nib
私は、xib で右マージン インジケーターを有効にすることは、UIViewAutoresizingFlexibleLeftMargin
内部コードなどを使用することと同等であるという (おそらく間違った) 想定をしていました。
だから、私はこのスナップショットに従って考えていました:
今日、私はクロスチェックをしなければならず、このスレッドに出くわしました。
また、このリンクの「自動サイズ変更ルールを使用してレイアウト変更を自動的に処理する」というタイトルのセクションが付いたアップルのドキュメント: https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/CreatingViews/ビューの作成.html
したがって、自動サイズ変更マスクをプログラムで設定することが xib 設定とどのように同等になるかについて、新たな概念が頭に浮かびました。
シナリオ 1 : 設定のみ(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)
は次と同等です。
XIBで?
シナリオ 2 : コードでの設定(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin)
は次と同等です。
XIBで?
更新された 2 つのシナリオは正しいですか? 私は今、私の理解の中にいますか?
iphone - フレームが設定されているときにビューでlayoutSubviewsが自動的に呼び出されないのはなぜですか?
私には見解があります。これは、大規模で複雑なプロジェクトの一部です。ビューのフレームが設定されている場合、layoutSubviews は自動的に呼び出されません。
これをいじって、次のメソッドをビューに入れてみました:
この時点で、期待どおり、フレームが設定されたときにレイアウトがやり直されました。そして、setNeedsLayout の行をコメントアウトすると、レイアウトが行われませんでした。さらに、スーパーが呼び出されている行で「ステップイン」をクリックしても、デバッガーは何もステップインしません。私が知る限り、スーパーの setFrame メソッドはオーバーライドされていません。
FWIW、ビューのフレームを変更する小さなテスト プロジェクトも行いました。この場合、それを行ったときに layoutSubviews が呼び出されました。[私のテスト プロジェクトでは setNeedsLayout が呼び出されませんでした。しかし、それが何かはわかりません。
誰が何が起こっているのか説明できますか?
編集:明確にするために、私のフレームの変更はビューの高さを変更しています。幅は変更されません。
iphone - NavigationBarHiddenをNOに設定すると、ビューのサイズが正しく変更されないiPhone / ipad
私は本当に私を夢中にさせているこの単純な問題を抱えています。
ナビゲーションコントローラーがあります。ルートビューコントローラーは、ナビゲーションバーを表示せずに表示する必要があるビューを持つVCです。これを実現するために、rootVC内のメソッドでbarのnavigationBarHidden
プロパティをに設定しました。navigationController
YES
-viewWillAppear:
もう一度表示するため-viewWillDisappear:
に、rootVCのメソッドで同じプロパティをNOに設定しました。
ビューにそのframe.sizeを尋ねると、320幅と460高さで正しく答えられます。別のビューを押すと(ナビゲーションバーが表示されるのがわかります)、ビューにそのサイズを尋ねると、320x460であると表示されますが、これが間違っていると、320x416のように表示されます。
別のビューを押してそのサイズを尋ねると、正しいサイズの320x416が得られます。今私が押し戻すとポップすると、私は再び正しいサイズを取得します。
事実、「中央」ビューはナビゲーションバーによって44ポイントオーバーラップされており、サイズをハードコーディングする以外は正しいサイズにすることができず、必要ありません。
ビューの自動サイズ変更マスクは、ファイルの所有者の1つであるため、IBによってブロックされています。ステータスバーのスタイルは不透明です。
ヒントはありますか?
THX、アンドレア
objective-c - マスクの自動サイズ変更はどのように機能しますか?
自動サイズ変更に関する多くの情報を見つけましたが、私の問題を解決できたものはありません。次のように、loadView メソッドでビューを呼び出す ViewController (RAViewController) があります。
それが呼び出すビュー (RAView) は次のようになります。
何らかの理由で、デバイスが横向きの場合、自動サイズ変更マスクを使用してボタンの幅をサイズ変更できません。どんな助けでも大歓迎です。
iphone - autoresizingMaskが正しく応答しない
プロジェクトのすべてのビューに自動サイズ変更マスクを実装しました。ただし、最後の設定であり、tableCells内に多くのスライダーがあるため、うまく機能していないようです。
私はそれを正しく実装したと確信しています
スライダー用とラベル用の柔軟な左マージン。
ローテーションが行われるときにテーブルのリロードも実装しました。
セルは正常に再利用されているか、少なくともポートレートモードでは機能しますが、回転して戻ると、写真に表示されているものが表示されます。
私が欠けているものについてのアイデアはありますか?
よろしくお願いします!
ios - 両方向のオブジェクト間の固定スペース
AutoresizingMask を使用して、相対的な位置をプログラムで定義しています。ほとんどすべてが機能しましたが、2 つの要素間で同じ分離を維持する方法がわかりません (UIButton、UILabel は 20px で区切られています) これは私が持っているものです:
UIButton、(100, 100) に配置、サイズ: 60x30、autoresizingMask=UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin
UILabel、(180,100) に配置、サイズ: 50x50、autoresizingMask=UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin
私の問題は、向きが変わったときに、これら 2 つの要素間の 20px のマージンを維持できないことです。
ios - UITableViewCell サブクラスのサブビューをセットアップして自動サイズ変更マスクを使用するにはどうすればよいですか?
iOS アプリケーションにグリッド (.NET の DataGridView と考えてください) を実装しようとしています。その行のデータの各列を表すいくつかのラベルがあるカスタム UITableViewCell サブクラスで UITableView を使用しています。私の質問は、デバイスの向きが変わった後にこれらのラベルの幅のサイズを変更することに関係しています。基本的には、縦方向にグリッド幅の 1/3 を占める列が、横方向に切り替えたときに幅の 1/3 を占めるように、比例してサイズを変更したいと考えています。
- (void)layoutSubviews
現在、UITableViewCell サブクラスのメソッドをオーバーライドすることでこれを実現しています。基本的に、iPad と iPhone の横長と縦長の比率をハードコーディングするだけです。ただし、これは、方向の変更に比例してグリッド自体のサイズが変更される場合にのみ機能し、常にそうであるとは限りません。
self.bounds.size.width
どのような場合でも機能する解決策を実現するために、layoutSubviews メソッドで使用することを考えましたが、マスクの自動サイズ変更がより良い解決策のようです。各 UILabel のマスクを に設定UIViewAutoResizingFlexibleWidth | UIViewAutoResizingFlexibleLeftMargin | UIViewAutoResizingFlexibleRightMargin
すると、探しているスケーリングのタイプを達成する必要があります。ただし、各ラベルの初期フレームを設定する方法がわかりません。layoutSubviews が呼び出されるまでセルの開始境界がわからない場合、最初にサブビューを配置するにはどうすればよいですか?
iphone - UITableViewCell 自動サイズ変更マスクの問題
デバイスの回転時に適切に配置する必要があるcontentView
3つの UI 要素があります。UITableViewCell
現在、これらの UI 要素のフレームを次のように適用しています。
これらの要素の autoresizingMask プロパティを使用して、デバイスが横向きから縦向き (デフォルトは縦向き、iPad のみ) に回転したときに、これらの要素のサイズを変更して互いに重ならないようにする方法を知りたいです。向きごとにカスタムのフレーム位置を設定したくありません。
私はこのようなことを試しました:
しかし、これはうまくいかないようです。要素はすべて重なり合っており、不幸にもレイアウトされています。
助言がありますか?
更新 1
テーブル ビュー セルは現在、ランドスケープ モードでどのように表示されるかを次に示します。
そして、デバイスが縦向きモードに回転したときに私が望むものは次のとおりです。
UPDATE 2 @Wolfert からの提案を組み込んだ cellForRowAtIndexPath の私のコードは次のとおりです。
ios5 - iOS5自動サイズ変更マスクの問題
Xcode Interface Builder(最後に利用可能なバージョン)と、iPadアプリケーション用の彼の自動サイズ変更マスクに問題があります。
私はこれらのビューを持っています。フレームはすべてIBを介して設定されます。これは、できるだけ少ないコードを記述したい瞬間からです。
- BannerAnteprime(UIScrollView)、x:0、y:0、幅:768、高さ:480。
- CentralToolbar(UIToolbar)、x:0、y:480、幅:768、高さ:44(デフォルトでは編集不可)
- BannerVideo(UIScrollView)、x:0、y:522、幅:768、高さ:480。
アプリは回転をサポートしているので、ユーザーが横向きまたは縦向きに回転すると、ビューのサイズが自動的に変更されるようにしたいのですが、何をしても期待した結果が得られないので、ユーザーがデバイスを回転させたときのフレーム。これが私が得たものです。
ご覧のとおり、寸法と位置に問題があります。スクロールビューのマスク構成は次のとおりです。
http://www.issamtp.org/ScrollViews.png
ツールバーの場合:
http://www.issamtp.org/Toolbar.png
そして、これらは私が得ることができる最も正しい結果に私を導きます、それは次のとおりです:
http://www.issamtp.org/portrait.pngポートレートと:
(出典:issamtp.org)
ランドスケープ用。
私はどこが間違っていますか?
objective-c - デスクトップ プロジェクトで autosizing または autoresizingMask を使用するのは悪いことですか?
やや熟練した iOS 開発者である私は、Cocoa でデスクトップ OSX プロジェクトに取り組み始めたばかりで、把握できない問題に直面しています。したがって、この質問は OSX 開発者向けです。
私は Interface Builder があまり好きではないので、ビューをコードで記述する傾向があります。私がビュー レイアウト コードを記述する最も顕著な方法はビュー コントローラーのloadView
メソッドであり、少なくとも iOSではすべてに sを使用autoresizingMask
します。小さい、大きい、回転した横向きと縦向きのビューを試してみて、すべてが適切であれば、リストの次の項目に進みます。デスクトップでは、autoresizingMask
動作 (または外観) が少し異なります。まず第一に、プロパティにはさまざまな名前がありますが、それらの動作も奇妙または予期しないように見えます。
以下の問題に遭遇したとき、コードが間違っているに違いないと思ったので、十分に長く試した後、確認のためにInterface Builderで再作成しましたが、まったく同じ結果が得られました. 垂直に積み重ねられた 4 つのサブビューを含むビューを取得します。真ん中の 2 つの高さを柔軟に設定し、外側の 2 つを固定します。実行してサイズを小さくし、再度元に戻すと、サイズ変更の前後で 2 つの完全に異なるレイアウトが得られます。画像を参照してください:
これで、実行ループ間で数学的な観点からこれが発生する理由を理解できますが、「自動サイズ変更」または「自動サイズ変更」機能の観点からは、これはまったく意味がありません。
すべてのサイズ変更の母となるトピックをここに書き込もうとする前に、これらの質問をしてもよろしいですか? 投稿に追加されると思われる場合は、サイズ変更のトピックについてさらに詳しく説明してください.
- デスクトップ プロジェクトで Interface Builder を使用したくないのはばかですか?
autoresizingMask
iOS プロジェクトよりも少ないものに依存する必要がありますか?- Interface Builder を使用せずに、レイアウトが標準に準拠していることを確認するための適切な代替手段は何ですか?
乾杯!