0

私はiPhoneアプリケーションを開発していて、下の画像のようにキャプション付きのカスタムTextFieldを作成しようとしています。ここに画像の説明を入力してください

画像からわかるように、ラベルはユーザーがデータベースに入力またはデータベースから読み取った値によって変更されます。また、名前以外のテキストフィールドもあります。

このカスタムテキストフィールドをどのように実装すればよいかわかりませんでしたか?

テキストフィールドの背景に「Name:」テキストを含む画像を配置して「Label」値を配置する方法と、境界線のみを含む画像を配置して「Name:Label」テキストを挿入する方法があります。

これらの方法は適切ですか、それとも他に利用できる最善のアプローチはありますか?

編集:画像の境界線はテキストフィールドの境界線です。また、「名前:ラベル」はテキストフィールドの上にあります。

4

1 に答える 1

0

記入するラベルまたはテキストフィールドの後ろまたは横に、目的のテキストを含む別のラベルを配置するだけです。好みに合わせてfonttextColorさらには設定することができます。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";

同様に、色、フォントなど、ラベルとテキストフィールドのすべてのプロパティを変更できます。

于 2012-08-27T20:49:22.013 に答える