2016-11-10 6 views
1

Ich erstelle eine IOS-Formular, die Feeds zurückgibt.IOS Ausrichtung Text Platzhalter in der Mitte und links Ausrichtung sein

Ich möchte Platzhalter-Text haben, in der Mitte vertikal und links Ausrichtung horizontal in das Textfeld

ich diesen Text

- (void)drawPlaceholderInRect:(CGRect)rect { 
    [RGB(36, 84, 157) setFill]; 

    UIFont *font = [UIFont SingPostLightItalicFontOfSize:_placeholderFontSize fontKey:kSingPostFontOpenSans]; 
    NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; 
    paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; 
    paragraphStyle.alignment = NSTextAlignmentLeft; 
    NSDictionary *attributes = @{ NSFontAttributeName: font, 
            NSParagraphStyleAttributeName: paragraphStyle, 
            NSForegroundColorAttributeName: [UIColor blackColor]}; 
    [[self placeholder] drawInRect:rect withAttributes:attributes]; 

} 

Aber der Platzhalter versucht haben, ist auf der Oberseite vertikal. Wie können wir das Gold erreichen? Vielen Dank

enter image description here

+0

Welchen Wert hat "rect", wenn es die gesamte Höhe der Steuerung abdeckt? oder nur die Höhe einer Zeile des Platzhaltertexts? – NeverHopeless

+0

hi rect ist der Rahmen des Halte-Textfelds –

+0

Wäre nicht mit Auto-Layout, 'UITextField' und UITextField' Platzhalter'-Eigenschaft einfacher? UITextField richtet den Text bereits vertikal zentriert für Sie aus. Innerer Schlagschatten wird jedoch ein Problem sein, ich weiß nicht, wie man inneren Schlagschatten erzeugt, ich weiß, wie man äußere Schlagschatten unter Verwendung des Codes erzeugt. – Zhang

Antwort

1

Der folgende Code Ihr Problem lösen. Ich habe es selbst ausprobiert. Es ist nur eine zusätzliche Zeile zu Ihrem Code.

- (void)drawPlaceholderInRect:(CGRect)rect { 

     CGFloat fontSize = 18; 
     UIFont *font = [UIFont systemFontOfSize:fontSize]; 
     NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; 
     paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; 
     paragraphStyle.alignment = NSTextAlignmentLeft; 

     NSDictionary *attributes = @{ NSFontAttributeName: font, 
           NSParagraphStyleAttributeName: paragraphStyle, 
     NSForegroundColorAttributeName: [UIColor blackColor]}; 

     CGRect newRect = CGRectInset(rect, 0, rect.size.height/2 - fontSize/2); 
     [[super placeholder] drawInRect:newRect withAttributes:attributes]; 
} 
+0

Vielen Dank, die das Problem lösen. Denken Sie, dass Unterklasse das Textfeld für Standard-Textfeld ist, um das gleiche Ergebnis zu erreichen? –

+0

Ich denke es ist, können Sie einfach 'attributedPlaceholder' Eigenschaft von' UITextField' verwenden. Probieren Sie es einmal aus :) – KrishnaCA

0

Sie können Platzhalter einer „y“ Position setzen bedeutet, dass Ihr „rect“ Wert als Textfeld Höhe/2 .Eine weitere Lösung, wenn Sie Standardeigenschaft von Textfeld für Platzhalter verwenden, die horizontal ausgerichtet werden würde .

wie zum Beispiel:

var tt : UITextField 
     tt.placeholder = "" 
+0

Hallo kannst du ein bisschen mehr erklären, wie wir das umsetzen können? Danke –

+0

Wie verwendest du dein Textfeld über Storyboard oder programmgesteuert? –

+0

Ich verwende programmatisch (erben altes Projekt) –