3

私はObjective-Cの初心者で、助けが必要です私の問題は、のサブクラスがありUITextField、プレースホルダーフォントをこのコードでカスタムに設定したいということです

- (void)drawPlaceholderInRect:(CGRect)rect {
[[self placeholder] drawInRect:rect withAttributes:@{NSFontAttributeName: [UIFont fontWithName:@"Georgia Belle" size:25],NSForegroundColorAttributeName:RGBA(174, 150, 108, 1)}]; } 

そして次の問題があります。シミュレーターで iPad を選択し、プログラムをコンパイルすると、すべてが正常に動作しますが、Retina デバイスを選択すると、次の例外が発生します。

 [__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0].

私が求めているのは、非網膜で動作するのに、網膜、あらゆる種類の網膜デバイスで例外をスローする理由です。

4

2 に答える 2

2

問題はフォントにあります。

HelveticaNeueInterface-Regularシステムフォントです。お気に入り:[UIFont systemFontOfSize:25]

一方RGBA(174, 150, 108, 1)、コードに問題があるため使用できません。

「Georgia Belle」という名前のフォントがプロジェクトに適切にインポートされていることを確認してください。

Georgia Belle.ttfをプロジェクトにドラッグ アンド ドロップします。

ここに画像の説明を入力

Info.plist を開き、新しい行を追加します。

ここに画像の説明を入力

ターゲットを開く / ビルド フェーズ / バンドル リソースをコピー
する Xcode がここで失敗し、新しいフォントが追加されないことがあります。

ここに画像の説明を入力

+をクリック

ここに画像の説明を入力

終わり

ここに画像の説明を入力

問題が解決しました。

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

私のソリューションは GitHub からダウンロードできます

最後に一つだけ。これは、すべての標準 iOS フォントを備えた素晴らしい Web サイトです: http://iosfonts.com

于 2014-07-03T09:30:03.520 に答える
1

コピー バンドル リソースにフォントを追加する必要があります。

于 2014-07-11T08:26:39.213 に答える