2012-03-03 21 views
1

UITextFieldのカスタム背景があります。しかし、UITextFieldの最初の20ピクセルがデザインによって取り込まれます。テキストは左から30ピクセルで始まります。私はかなり捜しましたが、私はそれを見つけることができませんでした。私はプロパティをオーバーライドするようなものを見てきましたが、この基本的なものには本当に必要ですか?uiTextFieldのテキストを右揃え(xcode)

+0

それはあなたの 'UITextField'を超える1行の長であるためには可能ですか? – HelmiB

答えて

3

:空UIView

  • U ITextViewleftViewプロパティとしてサブクラスのUITextFieldを追加し、メソッド textRectForBounds: editingRectForBounds:をオーバーライドし

    • を - ちょうどインセットでフレームを返すが
    を適用しました

    IMHOもう1つはよりエレガントです。

    例: .H:

    #import <UIKit/UIKit.h> 
    
    @interface BlackTextField : UITextField 
    
    @property (nonatomic, assign) CGFloat paddingRight, paddingTop, paddingLeft, paddingBottom; 
    @end 
    

    .M:

    #import "BlackTextField.h" 
    #import <QuartzCore/QuartzCore.h> 
    
    @implementation BlackTextField 
    @synthesize paddingTop, paddingBottom, paddingLeft, paddingRight; 
    
    - (id)initWithCoder:(NSCoder *)coder { 
        self = [super initWithCoder:coder]; 
        if (self) {   
         self.paddingRight = 10; 
         self.paddingLeft = 10; 
         self.paddingTop  = 5; 
         self.paddingBottom = 5;   
        } 
        return self; 
    } 
    
    - (CGRect)textRectForBounds:(CGRect)bounds 
    { 
        return CGRectMake(bounds.origin.x + self.paddingLeft, bounds.origin.y + self.paddingTop, bounds.size.width - self.paddingLeft - self.paddingRight, bounds.size.height - self.paddingTop - self.paddingBottom); 
    } 
    
    - (CGRect)editingRectForBounds:(CGRect)bounds 
    { 
        return [self textRectForBounds:bounds]; 
    } 
    
    @end 
    
    +0

    私はOPではありませんが、2番目の弾丸を達成する方法を共有することはできますか?私は同じことを探しています –

    +0

    私はいくつかのサンプルコードを追加しました。私の魅力のように動作します。 – wzs

    -1

    最も簡単な方法は、UIImageViewを作成し、UITextFieldと入力します。

    問題を解決しました。

    FYI:UITextFieldをサブクラス化することはできますが、これは巨大で複雑な仕事になります。私はスタンドアットビューではないと推薦していないと現在と将来の多くの落とし穴を持つことができます。私は2つの異なるソリューションを見てきました

    +0

    私はサブクラス化に関して上記の回答者にコメントしましたが、あなたの方法で唯一の問題は、あなたがUIColorのpatternImageをもともと使用していた場合です。あなたのやり方でそれを達成する方法がわかりません。 –

    関連する問題