如何将一个UITextField添加到CALayer并使其工作

我search谷歌,我发现这一点 。 但我不确定答案是否属实。

所以我需要的是将UITextField添加到CALayer并使其工作我用这种方法,但它不工作

 [layer addSubLayer:textField.layer]; 

任何想法来解决这个问题?

简短的回答是,你不能。 图层是较低级别的对象。 视图有图层,但图层不能有视图。

如果要将另一个视图的图层添加为当前视图图层的子图层,则视图级别将不知道图层被托pipe在其他位置。 该视图不会是视图层次结构的一部分,因此不会认为需要自己绘制视图。 而且,除非你在某个地方保持强烈的引用,否则它将被释放,导致你添加的层被释放,并创build一个僵尸。

视图包含视图。 图层包含图层。 保持分开。 如果您想要图层中的文本内容,则可以使用CATextLayer,尽pipe它们看起来不如文本UI对象,因为它们不会进行亚像素反锯齿。 我尝试使用文本图层,结果放弃了,因为它们看起来非常糟糕。