我正在尝试在UIButton中标记标签的文字。但它对我不起作用。
我在viewDidLoad
方法中的代码:
CGFloat x = 13.0f;
CGFloat y = 15.0f;
if (self.numberOfFirstButton == 0) {
self.numberOfFirstButton = 1;
}
for (NSUInteger i = 1; i <= 5; i++) {
for (NSUInteger j = 0; j < 10; j++) {
UIHouseButtons *button = [[UIHouseButtons alloc] init];
[button setFrame:CGRectMake(x+(47*j), y, 30.0f, 30.0f)];
[button setTitle:[NSString stringWithFormat:@"%i", self.numberOfFirstButton] forState:UIControlStateNormal];
[button drawRect:CGRectMake(x+(47*j), y, 30.0f, 30.0f)];
[self.view addSubview:button];
self.numberOfFirstButton++;
}
y += 48.0f;
}
我的drawRect
方法
- (void)drawRect:(CGRect)rect
{
CGRect textRect = self.titleLabel.frame;
// need to put the line at top of descenders (negative value)
CGFloat descender = self.titleLabel.font.descender;
CGContextRef contextRef = UIGraphicsGetCurrentContext();
// set to same colour as text
CGContextSetStrokeColorWithColor(contextRef, self.titleLabel.textColor.CGColor);
CGContextMoveToPoint(contextRef, textRect.origin.x, textRect.origin.y + textRect.size.height + descender);
CGContextAddLineToPoint(contextRef, textRect.origin.x + textRect.size.width, textRect.origin.y + textRect.size.height + descender);
CGContextClosePath(contextRef);
CGContextDrawPath(contextRef, kCGPathStroke);
[super drawRect:rect];
}
我的所有按钮都在视图中,但标签的文字没有下划线。我做错了什么?
答案 0 :(得分:2)
我建议使用NSAttributedString标签。有一堆开源项目可以让这很容易。两个主要项目是:
Nimbus' NIAttributedLabel
TTTAttributedLabel
Nimbus示例:
myLabel.underlineStyle = kCTUnderlineStyleSingle;
答案 1 :(得分:2)
您可以从UILabel继承并覆盖drawRect方法:
- (void)drawRect:(CGRect)rect {
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetRGBStrokeColor(ctx, 207.0f/255.0f, 91.0f/255.0f, 44.0f/255.0f, 1.0f); // RGBA
CGContextSetLineWidth(ctx, 1.0f);
CGContextMoveToPoint(ctx, 0, self.bounds.size.height - 1);
CGContextAddLineToPoint(ctx, self.bounds.size.width, self.bounds.size.height - 1);
CGContextStrokePath(ctx);
[super drawRect:rect];
}
然后在该标签上放置一个客户按钮。
答案 2 :(得分:0)
我已经创建了一个简单的UIButton子类BVUnderlineButton(基于Web上其他地方的其他代码),您可以直接进入项目。
在https://github.com/benvium/BVUnderlineButton(麻省理工学院执照)
的Github上