記入するラベルまたはテキストフィールドの後ろまたは横に、目的のテキストを含む別のラベルを配置するだけです。好みに合わせてfont
、textColor
さらには設定することができます。alpha
それらが重なっている場合(重なってはいけません!)backgroundColor
、ラベルのプロパティがに設定されていることを確認してください[UIColor clearColor]
。
UITextField
次のようにサブクラス化できます。
@interface LabeledTextField : UIView
@property (nonatomic, strong) UILabel *label;
@property (nonatomic, strong) UITextField *textField;
@end
#define kPercentWidth 0.5
@implementation LabeledTextField
-initWithCoder:(NSCoder)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
CGRect f = self.frame;
_label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,
f.size.width*kPercentWidth,f.size.height)];
_textField = [[UITextField alloc] initWithFrame:CGRectMake(0,0,
f.size.width*(1-kPercentWidth),f.size.height)];
[self addSubView:_label];
[self addSubView:_textField];
}
return self;
}
@end
次に、次のように使用できUIView
ます。ストーリーボードビューコントローラにを挿入し、クラスをに変更しますLabeledTextField
。これにより、が確実initWithCoder
に呼び出されます。それ以外の場合は、initコードを独自のsetup
関数に入れて、のオーバーライドから呼び出す必要がありますinitWithFrame
。ビューをコンセントに接続してください
// .h
#include LabeledTextField.h
//...
@property (nonatomic, strong) IBOutlet LabeledTextField *labeledTextField;
// .m, in some method
labeledTextField.textField.text = @"editable text";
labeledTextField.label.text = @"non-editable text";
同様に、色、フォントなど、ラベルとテキストフィールドのすべてのプロパティを変更できます。