首页 » iOS编程(第4版) » iOS编程(第4版)全文在线阅读

《iOS编程(第4版)》7.4 向屏幕中添加UILabel对象

关灯直达底部

为了增强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,这时输入的文字会随机出现在屏幕中的各个位置。