Apple的drawTextInRect文档似乎表明这是可能的:
“调用此方法时,当前图形上下文已使用默认环境和文本颜色进行配置。在重写方法中,您可以进一步配置当前上下文,然后调用super进行实际绘制或者你可以自己做绘画。如果你自己渲染文字,你不应该调用超级。“
但是我的UILabel子类(我已经确认 被调用)的下面示例不会导致文本大小发生变化,无论我指定的是什么文本大小。我是否抓住了正确的背景或者错过了更大的东西?
- (void)drawTextInRect:(CGRect)rect{
CGContextRef theContext = UIGraphicsGetCurrentContext();
CGContextSetFontSize(theContext, 32.0); // <-- doesn't change text size
[super drawTextInRect:rect];
}
注意 - 文本大小不是我需要更改文本的唯一内容,但是如果我可以更改文本大小,我很确定我需要做的其他更改会很容易。
答案 0 :(得分:4)
/* use CGContextSetLineWidth() and CGContextSetStrokeColorWithColor()
to adjust your outline settings: directly preceding StrokeRect() */
- (void)drawTextInRect:(CGRect)rect{
[super drawTextInRect:rect]; // let super do the work
CGContextStrokeRect(UIGraphicsGetCurrentContext(),rect);
}
答案 1 :(得分:2)
我以为我们昨天有这个...... 你可以相信appKit超类会将字体和颜色设置为你在InterfaceBuilder中设置的设置,所以试图覆盖这种行为是徒劳的。你能做什么,按摩参数进入绘图功能以改变功能......尝试这样的事情:
- (void)drawTextInRect:(CGRect)rect{
CGFloat newWidth = rect.size.width * 0.75; // 3/4 the original width
CGFloat newHeight = rect.size.height * 0.812; // and a little less tall.
CGRect newRect = CGRectMake(rect.origin.x,rect.origin.y,newWidth,newHeight);
[super drawTextInRect:newRect]; // draw text into the NEW rect!
}
另外,nikolai是正确的:如果你想改变字体,那么调用setFont!
答案 2 :(得分:2)
您可以尝试设置UILabel的字体:
UIFont *font = [UIFont fontWithName:@"Courier" size:32];
[self setFont: font];
[super drawTextInRect:rect];
答案 3 :(得分:1)
我认为对[super drawTextInRect:rect]的调用也会设置字体大小,撤消对CGContextSetFontSize的调用。如果你想要这个,你可能不得不自己做所有的绘图,而不是调用super的实现。
答案 4 :(得分:1)
UILabel的drawTextInRect方法设置文本大小(以及字体和其他设置)本身,覆盖您的大小。如果要更改字体大小,为什么不使用setFont:方法或minimumFontSize属性?
答案 5 :(得分:1)
您不在委托方法中执行此操作。你需要得到一个指针(IBOutlet)到UILabel。
然后您可以使用UILabel的 setText:方法设置UILabel的字体,粗体等