問題タブ [initwithframe]

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 投票する
3 に答える
30941 参照

objective-c - Objective C-カスタムビューとinitメソッドの実装?

in-codeとの両方を初期化できるようにしたいカスタムビューがありますnib

initWithFrameとメソッドの両方を書く正しい方法は何initWithCoderですか?これらは両方とも、初期化に使用されるコードのブロックを共有します。

0 投票する
1 に答える
5986 参照

ios - フレームの高さと幅を設定するための loadNibNamed と initWithFrame のジレンマ

.xib ファイルに関連付けられた UIView サブクラスを作成しました。この UIView サブクラスは、UIViewController で使用されます。コントローラーでは、UIView サブクラスをインスタンス化する方法が 2 つあります。

私は、カスタム初期化を実行できる最初のアプローチまたはその変形を好みます。唯一の問題は、既に で指定されているフレームの rect を指定する必要があることです。xib(フレームの高さと幅を意味しますMyUIView)。はい、もう一度ハードコーディングできますaRectが、これは維持するのが面倒です (たとえば、.xib で UI の位置を変更するとaRect、 も更新する必要があります)。

したがって、フレーム四角形が自動的に設定されるため、2 番目のアプローチを念頭に置く必要があります。残りの問題は、イニシャライザをカスタマイズできないことです (たとえば、初期化中に追加のパラメータを渡したいなど)。

あなたの好みは何ですか?あなたの意見では、どちらが優れていますか?

EDIT1:セルジオの答えに触発されて、私はこの回避策を思いつきました:

0 投票する
1 に答える
157 参照

objective-c - インスタンス変数がinitWithFrameによって上書きされずにNSViewを保存する方法:?

ココア初心者です。NSView 内のインスタンス変数をエンコードしてファイルに保存しようとしていました。しかし、エンコードするたびに、initWithFrame: が呼び出されたときに (null) に上書きされます。この動作をスキップして、アーカイブされていない NSView にインスタンス変数をロードする方法はありますか? これが私が持っているコードです:

上記のコードでは、最初に塗りつぶす色を緑に設定し、drawRect: メソッドが終了した直後に黄色に変更したため、保存される色は黄色になります。それでも、initWithFrame: ログ コメントで null に戻り、再びグリーン スクリーンが表示されます。見た目から、ビューからデータを分離する唯一の方法のようです。しかし、もっと簡単な方法があれば、誰でも私を助けることができますか?

0 投票する
1 に答える
536 参照

ios - initWithFrame には空のフレームが与えられます

UINavigationBar のカスタム サブクラスを利用する UINavigationController を使用しようとしています。ただし、initWithFrame で問題が発生しています。initWithFrame が呼び出されると、寸法が出力され、幅 0.0 と高さ 0.0 が表示されます。しかし、 UINavigationBar サブクラス内の -(void) layoutSubviews で同じフレームを印刷すると、フレームは正しく設定されます。initWithFrame がゼロ サイズのフレームを受け取るのはなぜですか? これを修正するにはどうすればよいですか? UINavigationController がそれを処理する必要があるため、手動で initWithFrame などを呼び出すのは正しくないように思えます。関連するコードは次のとおりです。

AppDelegate.m

CustomNavigationBar.m

ありがとうございました!

0 投票する
1 に答える
225 参照

ios - サブレイヤーは、initWithCoder ではなく、initWithFrame で作成された場合にのみ描画します

サブレイヤー (CAShapeLayer) とサブビュー (UILabel) を持つカスタム ビューがあります。でレイヤーを作成しinitWithCoderて背景色を設定すると、常に黒く表示されます。ただし、コードを に移動するinitWithFrameと、色が正常に表示されます。

でサブレイヤーを作成することは想定されていませんinitWithCoderか?

コードを機能させる唯一の方法は次のとおりです。

更新

drawRect塗りつぶしの色を間違って設定していたことが判明しました。colorLayer.fillColor = myColor.CGColorその代わりに使うべきだっ[myColor setFill][path fill]

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

ios - initWithImage は正常に動作します initWithFrame が複数回呼び出されています

数字で単純なカラー タイルを生成するために、UIImageViewまたはのいずれかをサブクラス化しています。UIViewを使用している場合はUIImageView、メソッドを使用しますinitWithImage。を使用する場合UIView、メソッドinitWithFrameが使用されています。赤い正方形のイメージまたはプログラムで生成された赤いビューのいずれかが初期化に使用されます。
問題は 2 つのスクリーンショットで見ることができます:initWithImageが使用されている場合 - すべて正常に動作します。メソッドが使用されている場合initWithFrame、通常のビューで偶数の順序で作成された情報なしで、複数の白いビューで終了しています。すべてのスクリーンショットとコードが添付されています。

を使用して初期化すると、次のようになりますinitWithImageinitWithImage

そして、これはそれがどのように見えるかinitWithFrameです:
initWithFrame

そして、別のクラス (UIScrollView サブクラス) からこれらの初期化子を呼び出す for ループ。ビューが初期化された後にラベル値が設定されています。

グーグルは、これは非常に一般的な問題であるという印象を与えましたが、これを解決する方法は見つかりませんでした. さらに、数字が完全に正しい順序になっている理由はまだわかりません。唯一の問題はビューの位置です。

0 投票する
1 に答える
349 参照

ios - initWithFrame と loadNibNamed が連携していませんか?

https://github.com/romaonthego/REPagedScrollViewで説明されているように、UIPageControl が埋め込まれた Paged UIScrollView を使用しています。

私が使用すると、コードは正常に動作します

しかし、私のプロジェクトには nib ファイルを使用する必要があります。私はそれを次のように呼んでいます:

これはほとんど問題なく動作します。ビューを呼び出すことができます。唯一の問題は、ビューが initWithFrame:CGRectMake をリッスンせず、フルスクリーンで読み込まれ、ナビゲートするページ コントロールが表示されないことです。

自動レイアウトはオフに設定されています。

ここで私が間違っている場所を誰かに教えてもらえますか? この問題を解決するために何ができますか?

敬具、デビッド

0 投票する
1 に答える
383 参照

macos - Cocoa: カスタム ビュー プロキシからの initWithFrame が呼び出されていません

Apple のドキュメントカスタム ビューの作成によると、Interface Builder でカスタム ビュー プロキシを使用している場合は、このメソッドを呼び出す必要があります。

カスタム ビュー用の Interface Builder パレットを作成していない場合、Interface Builder 内でサブクラスのインスタンスを作成するために使用できる 2 つの手法があります。1 つ目は、Interface Builder コンテナー パレットでカスタム ビュー プロキシ アイテムを使用することです。このビューはカスタム ビューの代役であり、他のビューに対してビューの位置とサイズを変更できます。次に、インスペクターを使用して、ビューが表す NSView のサブクラスを指定します。nib ファイルがアプリケーションによってロードされると、カスタム ビュー プロキシは指定されたビュー サブクラスの新しいインスタンスを作成し、initWithFrame: メソッドを使用してそれを初期化し、必要に応じて自動サイズ変更フラグを渡します。その後、ビュー インスタンスは awakeFromNib メッセージを受け取ります。

残念ながら、私の場合は呼び出されていません。誰かがこの問題に対処しなければなりませんでしたか?

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

ios - `[UIView initWithFrame:]` の矛盾するドキュメント: nullable または nonnull?

CLANG_ANALYZER_NONNULL(つまり-Xclang nullability)を使用すると、「 null 以外の値を返すことが期待される関数から Null が返されます」という結果が得られました。

ここに画像の説明を入力

Xcode 7.3 および iOS 9.3 のドキュメントを使用して確認initWithFrame:したところ、次のものが返されnilます。

説明

しかし、UIView.h はすべてをNS_ASSUME_NONNULL_BEGINでカプセル化するため、次のように解釈できます。

インターフェース

なので:

したがって、ドキュメントではそれが であると説明されていnullableますが、ヘッダー ファイルでは であると説明されていますnonnull。どちらを信頼しますか?

私は書くべきですか:

または:

アップデート

Xcode のドキュメントが更新され、次のようになりました。 initWithFrame: ドキュメント

したがって、これ以上の競合はありません。