左側にプレースホルダー、右側に編集済みテキストを持つ UITextField を作成する方法は?
UITextField 自体では、そのプロパティを使用してプレースホルダーと編集済みテキストを別の側に配置することはできません。ストーリーボード -> 属性インスペクター -> 配置で設定してみてください。それらは両方とも左または両方右にあります。プレースホルダーのみ、またはテキストのみの特別な配置はありません。
左側にプレースホルダー、右側に編集済みテキストを持つ UITextField を作成する方法は?
UITextField 自体では、そのプロパティを使用してプレースホルダーと編集済みテキストを別の側に配置することはできません。ストーリーボード -> 属性インスペクター -> 配置で設定してみてください。それらは両方とも左または両方右にあります。プレースホルダーのみ、またはテキストのみの特別な配置はありません。
まず、テキストの配置を右に設定します。
[textField setTextAlignment:NSTextAlignmentRight];
プレースホルダーをサブビューとして追加するか、次のleftView
プロパティを使用できます。
[textField setLeftView:<your label here>];
これを行うカスタム UITextField サブクラスを作成しました。これを使用するには、ストーリーボードまたは Xib に UITextField を作成するだけです...そこにプレースホルダー テキストを配置し、テキスト フィールド クラスを OBSTextFieldWithLabel として設定すると、次のコードを使用できます。
@interface OBSTextFieldWithLabel : UITextField
@end
@implementation OBSTextFieldWithLabel
- (void)awakeFromNib
{
[super awakeFromNib];
NSString *labelText = [self placeholder];
self.placeholder = nil;
CGRect labelFrame = CGRectMake(20, 10, 150, 15);
UILabel *placeholderLabel = [[UILabel alloc] initWithFrame:labelFrame];
[placeholderLabel setFont:[UIFont systemFontOfSize:12]];
[placeholderLabel setTextColor:[UIColor lightGrayColor]];
[placeholderLabel setText:labelText];
[self addSubview:placeholderLabel];
[self setTextAlignment:NSTextAlignmentRight];
}
@end
ラベルのサイズは動的に設定されていないため、これはおそらく 100% 完璧ではありません...しかし、起動して実行する必要があり、動作するはずです :-)
私はあなたを助けるかもしれないコントロールを書きました。基本的に、編集中に UITextField を強調表示することを目的としていますが、スクリーンショットでわかるように、左側にプレースホルダーのメカニズムもあります。
https://www.cocoacontrols.com/controls/sahighlightedtextfield
これがあなたを正しい方向に向けることを願っています。