5

最初に、プレースホルダーのテキストの色を設定する必要があったため、いくつかのスタック オーバーフローの投稿に示されているように、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 は、初期化中に設定したプロパティであることに注意してください。

4

3 に答える 3

5

ほら、相棒

UITextField をサブクラス化すると、作業が行われます。

// CustomTextField.h
@interface CustomTextField : UITextField {
}
@end

メソッドをオーバーライドします。

@implementation
- (CGRect)placeholderRectForBounds:(CGRect)bounds {
    return CGRectMake(x,y,width,height);//Return your desired x,y position and width,height
}

- (void)drawPlaceholderInRect:(CGRect)rect {
    //draw place holder.
 [[self placeholder] drawInRect:rect withFont:[UIFont systemFontOfSize:12]];

}
@end
于 2012-07-18T10:49:59.910 に答える
4

私はこれがうまくいくと思います(テスト済み)

- (void) drawPlaceholderInRect:(CGRect)rect {

      [[UIColor redColor] setFill];
      [self.placeholder drawInRect:rect
                          withFont:self.font
                     lineBreakMode:UILineBreakModeTailTruncation
                         alignment:self.textAlignment];
    }

https://github.com/mschulkind/cordova-true-native-ios/blob/master/Classes/UITextFieldPlugin.m

于 2013-04-11T06:00:34.370 に答える
2

これは UITextfield サブクラスで行うことができます

- (void)drawPlaceholderInRect:(CGRect)rect {

[[UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.8] setFill];

[[self placeholder] drawInRect:rect withFont:[UIFont boldSystemFontOfSize:16.0] lineBreakMode:UILineBreakModeTailTruncation alignment:NSTextAlignmentCenter];

}

于 2013-07-27T05:46:35.990 に答える