UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 60, 30)]; label.backgroundColor = [UIColor blueColor]; // 设置圆角 label.layer.cornerRadius = 10; [self.view addSubview:label];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 36)]; label.layer.borderWidth = 1.0f; label.layer.borderColor = [UIColor darkGrayColor].CGColor; label.layer.cornerRadius = 5.0f;
UILabel事件响应:
添加一个UILabel,并为label添加了点击事件,怎么才能让事件响应?
UITapGestureRecognizer *tapGestureTel = [[[UITapGestureRecognizeralloc]initWithTarget:self action:@selector(onLabelEvent:)]autorelease]; [myLabel addGestureRecognizer:tapGestureTel];
-(void) onLabelEvent:(UITapGestureRecognizer *)recognizer{ UILabel *label=(UILabel*)recognizer.view; NSLog(@"%@被点击了",label.text); }
– touchesBegan:withEvent: – touchesMoved:withEvent: – touchesEnded:withEvent: – touchesCancelled:withEvent:
如:
// 点击该label的时候, 来个高亮显示 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [self setTextColor:[UIColor whiteColor]]; } // 还原label颜色,获取手指离开屏幕时的坐标点, 在label范围内的话就可以触发自定义的操作 - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { [self setTextColor:COLOR(59,136,195,1.0)]; UITouch *touch = [touches anyObject]; CGPoint points = [touch locationInView:self]; if (points.x >= self.frame.origin.x && points.y >= self.frame.origin.x && points.x <= self.frame.size.width && points.y <= self.frame.size.height) { [delegate myLabel:self touchesWtihTag:self.tag]; } }
换个思路,既然要加点击事件,为什么不用UIButton,而用UILabel呢?
原因主要是有时通过UIButton无法实现对文字的完美控制,笔者在项目中就遇到这样的情形:当使用粗斜体+大号字体显示文本时,会有部分文字显示不全。
UILabel添加背景图片
UIColor *color = [UIColor colorWithPatternImage:[UIImage imageNamed:@"itemkaung2.png"]]; [myLabel setBackgroundColor:color];
label.textAlignment = UITextAlignmentLeft; label.textAlignment = UITextAlignmentCenter; label.textAlignment = UITextAlignmentRight;