Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何将文本绘制到子视图中?_Objective C_Iphone - Fatal编程技术网

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();
    }
}