Mam podklasy klasy UITextField i zrobił poniższy kodUITextField zastępczy ciąg jest zawsze Top wyrównane w ios7
- (void)drawPlaceholderInRect:(CGRect)rect
{
[self.placeHolderTextColor setFill];
[self.placeholder drawInRect:rect
withFont:self.placeHolderFont
lineBreakMode:NSLineBreakByTruncatingTail
alignment:NSTextAlignmentLeft];
}
Napisałem również self.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
linii kodu
Ten tekst zastępczy jest właściwie centrum wyrównane w ios6, ale nie w ios7, jest wyświetlane wyrównane do góry.
Mimo że tekst, który wpisuję, pojawia się w środku. Występuje tylko z łańcuchem zastępczym.
Próbowałem z Xib ustawić ciąg znaków zastępczych. W XIB jest wyświetlany prawidłowo, ale po uruchomieniu kodu pole zastępcze pola tekstowego jest wyrównane do góry.
Jakiekolwiek obejście tego problemu?
Odpowiedź Vadoffa zadziałała dla mnie. Nadal jest to pełna implementacja, która może pomóc każdemu z tym samym problemem.
drawInRect
metoda jest przestarzałe w ios7 i drawInRectWithAttributes
działa
- (void)drawPlaceholderInRect:(CGRect)rect
{
[self.placeHolderTextColor setFill];
CGRect placeholderRect = CGRectMake(rect.origin.x, (rect.size.height- self.placeHolderFont.pointSize)/2 - 2, rect.size.width, self.placeHolderFont.pointSize);
rect = placeholderRect;
if(iOS7) {
NSMutableParagraphStyle* style = [[NSMutableParagraphStyle alloc] init];
style.lineBreakMode = NSLineBreakByTruncatingTail;
style.alignment = self.placeHolderTextAlignment;
NSDictionary *attr = [NSDictionary dictionaryWithObjectsAndKeys:style,NSParagraphStyleAttributeName, self.placeHolderFont, NSFontAttributeName, self.placeHolderTextColor, NSForegroundColorAttributeName, nil];
[self.placeholder drawInRect:rect withAttributes:attr];
}
else {
[self.placeholder drawInRect:rect
withFont:self.placeHolderFont
lineBreakMode:NSLineBreakByTruncatingTail
alignment:self.placeHolderTextAlignment];
}
}
Mam ten sam problem, nie ma jeszcze rozwiązania. – Vadoff