为了增强HypnoNerd的催眠效果,本节将添加一些出现在屏幕随机位置的UILabel对象。
在BNRHypnosisViewController.m中添加一个新方法,在屏幕随机位置绘制20个UILabel对象。同时,该方法有一个NSString类型的参数,表示UILabel对象显示的文字。
- (void)drawHypnoticMessage:(NSString *)message
{
for (int i = 0; i < 20; i++) {
UILabel *messageLabel = [[UILabel alloc] init];
// 设置UILabel对象的文字和颜色
messageLabel.backgroundColor = [UIColor clearColor];
messageLabel.textColor = [UIColor whiteColor];
messageLabel.text = message;
// 根据需要显示的文字调整UILabel对象的大小
[messageLabel sizeToFit];
// 获取随机x坐标,
// 使UILabel对象的宽度不超出BNRHypnosisViewController的view宽度
int width = (int)(self.view.bounds.size.width –
messageLabel.bounds.size.width);
int x = arc4random % width;
// 获取随机y坐标,
// 使UILabel对象的高度不超出BNRHypnosisViewController的view高度
int height = (int)(self.view.bounds.size.height –
messageLabel.bounds.size.height);
int y = arc4random % height;
// 设UILabel对象的frame
CGRect frame = messageLabel.frame;
frame.origin = CGPointMake(x, y);
messageLabel.frame = frame;
// 将UILabel对象添加到BNRHypnosisViewController的view中
[self.view addSubview:messageLabel];
}
}
接下来修改textFieldShouldReturn:,将UITextField对象的文本内容作为message参数。调用drawHypnoticMessage:;再清空文本内容并调用resignFirstResponder关闭键盘。
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
NSLog(@"%@", textField.text);
[self drawHypnoticMessage:textField.text];
textField.text = @"";
[textField resignFirstResponder];
return YES;
}
构建并运行应用,在UITextField对象中输入一些文字,然后点击Done,这时输入的文字会随机出现在屏幕中的各个位置。