게임을 하다보면 캐릭터들이 서로 대화를 할때 말하는 느낌을 주기 위해 한글자씩 출력이 되는 연출이 있다. 꽤 예전부터 지금까지 고전적으로 사용된 연출이다. 하지만 아쉽게도 기본 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를 리턴해준다. 대화가 진행됨에 따라 유저의 행동에 맞춰서 해당 메소드로 텍스트를 교체 해주면 된다!
시간이 되면 해당 프로젝트를 Cocoapods에 등록하는것도 한번 해봐야겠다