Objective c 如何将文本绘制到子视图中?
我想使用Objective c 如何将文本绘制到子视图中?,objective-c,iphone,Objective C,Iphone,我想使用drawInRect:withFont:lineBreakMode调用将文本绘制到UIView的子视图中,但该调用仅在当前上下文中操作 是否可以从当前视图将文本绘制到子视图中 子视图是一个通用的UIView实例,如果可以避免的话,我不想仅仅为了这个目的创建一个新的UIView派生类。不,你不能按照你描述的做。子类化UIView正是您应该使用的方法-创建一个UIView子类并没有错,它只有一个简单的-drawRect:方法。不,如果您要对上下文执行某些操作,您必须在该视图的-drawRec
drawInRect:withFont:lineBreakMode
调用将文本绘制到UIView
的子视图中,但该调用仅在当前上下文中操作
是否可以从当前视图将文本绘制到子视图中
子视图是一个通用的
UIView
实例,如果可以避免的话,我不想仅仅为了这个目的创建一个新的UIView
派生类。不,你不能按照你描述的做。子类化UIView正是您应该使用的方法-创建一个UIView子类并没有错,它只有一个简单的-drawRect:
方法。不,如果您要对上下文执行某些操作,您必须在该视图的-drawRect:。您可以始终使子视图成为UIView子类,该子类重写-drawRect:以显示所需的文本。。。但在这一点上,您正在重新创建UILabel。一个选项是向视图的图层添加CALayer,而不是向视图添加UIView。CALayer有一个委托
属性,您可以将任何对象分配给该属性。CALayer呼吁:
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
在委托上
,您可以使用该委托执行以下操作:
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
if (layer == myLayer) {
UIGraphicsPushContext(ctx);
[string drawInRect:rect withFont:font lineBreakMode:mode];
UIGraphicsPopContext();
}
}