2013-10-04 3 views
2

라벨 텍스트에 애니메이션을 적용해야합니다. @"text . ", @"text . ", @"text . ", @"text ."iOS 7 멀티 스페이스 문제

사용자에게는 점 애니메이션 만 표시됩니다. 레이블 텍스트에 가운데 맞춤을 사용합니다.

는 그 목적을 위해 타이머를 사용

- (void)processTimerFired:(NSTimer *)timer { 
    NSMutableDictionary *dict = [timer userInfo]; 
    NSMutableString *string = [[dict objectForKey:@"label"] mutableCopy]; 
    int dotNumber = [[dict objectForKey:@"dot"] intValue]; 
    if (dotNumber == 3) { 
     dotNumber = 1; 
    } 
    else { 
     dotNumber += 1; 
    } 

    [dict setObject:@(dotNumber) forKey:@"dot"]; 

    for (int i = 1; i < 4; i++) { 
     if (i == dotNumber) { 
      [string appendString:@"."]; 
     } 
     else { 
      [string appendString:@" "]; 
     } 
    } 

    self.informationLabel.text = string; 
} 

iOS에서 6 모든 것이 OK이지만, 아이폰 OS 7은 엑스 코드는 공간의 수를 줄일 수 있다는 것, 그래서 텍스트의 기원은 항상 달라진다. 그래서 텍스트가 흔들리는 것 같습니다.

테스트 끝에 "+"를 추가하려고했습니다. 그리고 모든 것이 OK가되었습니다. 그래서 xcode는 그 이후에 다른 기호가 없을 때만 '초과'공간을 제거하는 것처럼 보입니다.

+0

그래, 내가 확인하고 'UILabel'이 텍스트를 잘라내는 것처럼 보입니다. –

답변

0

나는이 문제로 테스트를하고 있는데, 텍스트를 가운데로 맞춰야한다고 생각합니다.

self.text = @[@"Text. ",@"Text . ", @"Text ."]; 
[self.shorLabel setTextAlignment:NSTextAlignmentCenter]; 
[self doAnimation:@0]; 

그리고 doAnimation 방법 : 그건 내 코드의

- (void) doAnimation: (NSNumber *)index 
{ 
    int indexInt = ([index intValue] +1)%3; 
    [self.shorLabel setText:self.text[indexInt]]; 
    [self.shorLabel sizeToFit]; 
    [self.shorLabel setFrame:CGRectMake((self.view.frame.size.width - self.shorLabel.frame.size.width)/2, self.shorLabel.frame.origin.y, self.shorLabel.frame.size.width, self.shorLabel.frame.size.height)]; 
    [self performSelector:@selector(doAnimation:) withObject:@(indexInt) afterDelay:0.2]; 
} 
+0

아니요, TextAllignmentCenter가 필요합니다. –

+0

좋아요, 모든 단계에서 위치를 다시 계산하는 다른 방법을 사용할 수 있습니다. –

+0

예,하지만 더 나은 접근 방법을 찾고 싶습니다. –

0

당신이 유니 코드가 아닌 부서지기 쉬운 공간 @" " (Mac에서 Alt 키를 공백으로 얻은)와 공간 @" "을 대체하는 경우?

+0

그게 도움이되지 못했습니다. –