2013-06-04 14 views
5

Używam nowy iOS functionnality przełożyć storyboardy (http://developer.apple.com/library/ios/#referencelibrary/GettingStarted/RoadMapiOS/chapters/InternationalizeYourApp/InternationalizeYourApp/InternationalizeYourApp.html)iOS Storyboard Lokalizowane struny nie działają na UILabel podklas

Problem z tym rozwiązaniem, to nie działa z moim podklasy UILabel.

Oto kody do moich podklasy UILabel:

.h:

#import <UIKit/UIKit.h> 
@interface LabelThinText : UILabel 
- (void)awakeFromNib; 
-(id)initWithFrame:(CGRect)frame; 
@end 

.m:

@implementation LabelThinText 

- (void)awakeFromNib 
{ 
    [super awakeFromNib]; 
    [self setFont:[UIFont fontWithName:@"Raleway-Light" size:[[self font] pointSize]]]; 
} 

-(id)initWithFrame:(CGRect)frame 
{ 
    id result = [super initWithFrame:frame]; 
    if (result) { 
     [self setFont:[UIFont fontWithName:@"Raleway-Light" size:[[self font] pointSize]]]; 
    } 
    return result; 
} 

@end  

Chyba jestem czegoś brakuje, aby uzyskać automatyczne tłumaczenie z mój plik Storyboard.strings.

Ktoś ma pomysł?

Dzięki!

+0

Możesz pobrać mój projekt testowy: https://github.com/arn00s/iOS_BaseLocalization Po prostu przełącz język urządzenia z EN na FR, a zobaczysz różnice. –

Odpowiedz

1

Wpadłem na ten sam problem i z tego samego powodu ustawiłem niestandardową czcionkę na etykiecie. Moja strategia była jednak trochę bardziej ogólna. Moja niestandardowa czcionka jest podobna do Helvetica, więc użyłem Helvetica Neue w IB jako czcionki zastępczej. Podklasa UILabel przetłumaczyła to na moją niestandardową czcionkę, zachowując rozmiar czcionki i wagę, dzięki czemu mogłem kontrolować wszystko poprzez IB.

To sprawiło, że moje obejście błędu tłumaczenia (zakładam, że to błąd) jest łatwiejsze. Przechodzę wszystkie moje widoki rekurencyjnie w viewDidLoad i mapuję wszystkie czcionki UILabel, jeśli pasują one do czcionki zastępczej, i to samo dla Uibutton w moim przypadku.

Czy zgłosiłeś błąd?

+1

Nie zgłosiłem błędu, ale poprosiłem o wsparcie techniczne od Apple. Powiedzieli mi, że muszą szczegółowo przyjrzeć się inżynierowi (miesiąc temu). Nadal czekam na odpowiedź ... –

+3

Mam podobny problem. Zaktualizuj, gdy usłyszysz od Apple. –

+0

Każda aktualizacja w tej sprawie? – Anastasia

1

napotkał ten sam problem, oto jak mam wokół niego:

Rzuć niestandardowej klasy i utworzyć kategorię na UILabel, w przypadku UILabel + ThinText:

- (void) setThinText:(BOOL)thinText 
{ 
    if (thinText) { 
     [self setFont:[UIFont fontWithName:@"Raleway-Light" size:[[self font] pointSize]]]; 
    } 
} 

W swojej serii ujęć, wybierz etykietę wybierz Identity Inspector i dodaj następujący User Defined Runtime Atrybut:

Keypath: thinText - Rodzaj: Boolean - Wartość: sprawdzone

0

mam ten problem zbyt. Rozwiązuję to ustawienie niestandardowej czcionki w każdym ViewController. Pokażę wam przykład:

CustomViewController.h 
@interface CustonViewController 

@property (strong, nonatomic) IBOutlet UILabel* someLabel; 

@end 

in CustomViewController.m

- (void)viewDidLoad 
{ 
    [self setUoFonts]; 
} 

- (void)setUpFonts 
{ 
    self.someLabel.font = [UIFont fontWithName:@"AmaticSC-Regular" size:self.someLabel.font.pointSize]; 
} 

I to !. Będziesz mieć tłumaczenie i niestandardową czcionkę.

Pamiętaj, aby usunąć niestandardową klasę z StoryBoard.