最初に、プレースホルダーのテキストの色を設定する必要があったため、いくつかのスタック オーバーフローの投稿に示されているように、UITextfield をサブクラス化しました。これはうまくいきます。これの投稿例は次のとおりです。 UITextField をサブクラス化し、 drawPlaceholderInRect をオーバーライドして Placeholder color を変更するにはどうすればよいですか。
しかし、使用しようとするsearchNameField.textAlignment = UITextAlignmentCenter;
と、プレースホルダーが中央に配置されなくなりました。入力テキストはまだうまく中央に配置されています。
では、サブクラス化のためにセンタリングが機能していないと仮定すると、プレースホルダ テキストをセンタリングするには、UITextField サブクラスに何を追加する必要があるでしょうか?
ありがとう
編集
この問題を解決するために使用したコードを次に示します。これは、UITextField のサブクラス内に配置されます。
- (CGRect)placeholderRectForBounds:(CGRect)bounds
{
CGSize size = [[self placeholder] sizeWithFont:[UIFont fontWithName:@"Arial" size:placeholdTextSize]];
return CGRectMake( (bounds.size.width - size.width)/2 , bounds.origin.y , bounds.size.width , bounds.size.height);
}
placeholdTextSize は、初期化中に設定したプロパティであることに注意してください。