Dwie linie tekstu w UISegmentedControl

Spróbuj, jak mogę, nie mogę rozwiązać błędu UISegmentedControl dla aplikacji na iPhone'a z systemem iOS7.

Kiedy tworzę kontrolkę segmentowaną, używam tego kodu:

NSArray *segmentedControlItemArray = [NSArray arrayWithObjects: @"Nominal:\n27 inch", @"Actual:\n700c x 23mm", @"Actual:\n700c x 20mm", nil];
_wheelDiameterSegmentedControl = [[UISegmentedControl alloc] initWithItems:segmentedControlItemArray];
_wheelDiameterSegmentedControl.frame = CGRectMake(0, 102, 290, 50);
_wheelDiameterSegmentedControl.selectedSegmentIndex = 0;
_wheelDiameterSegmentedControl.tintColor = [UIColor colorWithRed:0.35 green:0.4 blue:0.9 alpha:1.0];

for (id segment in [_wheelDiameterSegmentedControl subviews]) {
    for (id label in [segment subviews]) {
        if ([label isKindOfClass:[UILabel class]]) {
            UILabel *titleLabel = (UILabel *) label;
            titleLabel.numberOfLines = 0;   
        }   
    }  
}

[_wheelDiameterSegmentedControl addTarget:self
                     action:@selector(pickOne:)
           forControlEvents:UIControlEventValueChanged];

[_wheelDiameterMenuContainer addSubview:_wheelDiameterSegmentedControl];

Niestety, nie mogę publikować obrazów lub pokazywałbym obraz dokładnie takiej kontroli, jakiej chcę: każdy segment w formancie UISegmented ma dwie linie tekstu, z przerwą wierszową dokładnie tam, gdzie o to poprosiłem.

Jednak podczas obrotu chciałbym, aby kontrolka segmentowana była pełna, a podziały linii wyglądały głupio w tak szerokich segmentach. Tak więc w willAnimateRotationToInterfaceOrientation dołączyłem następujący kod, bez przerw w wierszach:

    [_wheelDiameterSegmentedControl setFrame:CGRectMake(0, 102, 450, 50)];
    [_wheelDiameterSegmentedControl setTitle:@"Nominal: 27 inch" forSegmentAtIndex:0];
    [_wheelDiameterSegmentedControl setTitle:@"Actual: 700c x 23mm" forSegmentAtIndex:1];
    [_wheelDiameterSegmentedControl setTitle:@"Actual: 700c x 20mm" forSegmentAtIndex:2];

I jeszcze raz, gdybym mógł wstawić obraz, pokazałbym Ci dokładnie to, czego chcę: szeroki UISegmented Control bez żadnych podziałów na etykietach (1 linia tekstu na etykiecie).

Oto, gdzie wpadam w kłopoty. Moje wybory, kiedy obracam się z powrotem do portretu, wydają się być:

1 linia tekstu etykiety, obcięta, z formatem

„Rzeczywisty: 7 ...”

kiedy po prostu zresetuję rozmiar UISegmentedControl za pomocą

[_wheelDiameterSegmentedControl setFrame:CGRectMake(0, 102, 290, 50)];

2 linie tekstu etykiety, obcięte, z formatem

"Rzeczywisty:
700c x ... "

po zresetowaniu rozmiaru, a także zresetowaniu wartości ciągu i ponownym uruchomieniu pętli kodu, który ustawia numer etykietyOfLines na 2, używając

    NSArray *segmentedControlItemArray = [NSArray arrayWithObjects: @"Nominal:\n27 inch", @"Actual:\n700c x 23mm", @"Actual:\n700c x 20mm", nil];

    [_wheelDiameterSegmentedControl setTitle:[segmentedControlItemArray objectAtIndex:0] forSegmentAtIndex:0];
    [_wheelDiameterSegmentedControl setTitle:[segmentedControlItemArray objectAtIndex:1] forSegmentAtIndex:1];
    [_wheelDiameterSegmentedControl setTitle:[segmentedControlItemArray objectAtIndex:2] forSegmentAtIndex:2];
    for (id segment in [_wheelDiameterSegmentedControl subviews]) {
        for (id label in [segment subviews]) {
            if ([label isKindOfClass:[UILabel class]]) {
                UILabel *titleLabel = (UILabel *) label;
                titleLabel.numberOfLines = 2;
            }
        }
    }
    [_wheelDiameterSegmentedControl setFrame:CGRectMake(0, 102, 290, 50)];

3 linie tekstu etykiety z formatem

"Rzeczywisty:
700c x
20mm

to jest to, co otrzymuję, kiedy wymieniam wymuszoną liczbęOfLines = 2 powyżej na NumberOfLines = 0, która działała, gdy ustawiłem UISegmentedControl.

To, co chciałbym, to to, co otrzymuję, gdy tworzę kontrolę, czyli

"Rzeczywisty:
700c x 20mm

Ale bez względu na to, co próbowałem (wstawienie kodu string i numberOfLines do willRotateToInterfaceOrientation lub didRotateFromInterfaceOrientation; ponowne ustawienie ramki UISegmentedControl przed zmianą tekstu; ponowne ustawienie ramki po zmianie tekstu ...), mogę ' odzyskaj moją ładną, zgrabną, dwuwierszową etykietę. Czego mi tu brakuje?

questionAnswers(3)

yourAnswerToTheQuestion