iOS에서 게임처럼 한글자씩 출력되는 텍스트 창 만들기
게임을 하다보면 캐릭터들이 서로 대화를 할때 말하는 느낌을 주기 위해 한글자씩 출력이 되는 연출이 있다. 꽤 예전부터 지금까지 고전적으로 사용된 연출이다. 하지만 아쉽게도 기본 UILabel에서 지원해주지 않아서 간단하게 만들어 보았다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#import "RGMessageLabel.h" - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. messageLabel.text = @"Do any additional setup after loading the view, typically from a nib."; messageLabel.numberOfLines = 0; i = 0; textArray = @[@"피카츄 라이츄 파이리 꼬북이 버터플 야도란 피존투 또가스", @"서로생긴 모습은 달라도 우리는 모두친구 (맞아)", @"산에서 들에서 때리고 뒹굴고 사막에서 정글에서 울다가 웃다가", @"서로만나기까지 힘들었어도 우리는 모두친구 피카피카", @"(울랄라라) 내가 원하는건 너도 원하고 마주잡은 두손에 맹새해", @"힘을 내봐 (그래 힘을내봐) 용기를내봐 (그래 용기를내봐)", @"피카피카 피카츄 피카피카 피카츄 아름다운 우리추억 기억해", @"피카피카 피카츄 피카피카 피카츄 너와나 꿈을위해 위해", @"피카피카 피카츄 피카피카 피카츄 따뜻한 햇살 밝은 세상", @"피카피카 피카츄 피카피카 피카츄 우리모두 꿈을위해", @"피카츄 피카츄 피카 피카 피카츄" ]; } -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ NSLog(@"touch"); /* -(BOOL)animationOneLatterText:(NSString *)text를 호출하여 원하는 텍스트를 한글자씩 출력한다. 애니메이션이 끝나기전에 새로운 텍스트가 들어오면 한글자씩 나오던 애니메이션이 끝나며 이전 텍스트가 전부 출력되고 no를 리턴한다 애니메이션이 끝난 상태라면 yes값이 출력되며 새로운 글자 애니메이션이 시작된다 */ if([messageLabel animationOneLatterText:textArray[i]]){ i++; } } |
사용법은 간단하다고 생각한다! 프로젝트에 RGMessageLabel를 추가해주고 메인에 되는 메소드는 -(BOOL)animationOneLatterText:(NSString *)text으로 메시지가 바뀌고 애니메이션이 시작될때마다 yes를 리턴해주고 만약 애니메이션이 진행중이면 no를 리턴해준다. […]