我怎样才能让我的CATextLayer对象滚动喜欢的UITextView?(How can i ma

2019-11-01 05:08发布

我已经使用了CATextLayer显示粗体和正常文本together.Now一段时间,我收到来自Web服务的响应长的文本,所以我不能够显示完整的text.Can任何一个请帮我应该是什么使CATextLayer对象的方式滚动像textview.Please建议我关于this.I也从取参考任何解决方案在这里 ,但它不是为我工作。 我使用此代码:

/ *按需创建文本层* /

if (!_textLayer) {
    _textLayer = [[CATextLayer alloc] init];
    //_textLayer.font = [UIFont boldSystemFontOfSize:13].fontName; // not needed since `string` property will be an NSAttributedString
    _textLayer.backgroundColor = [UIColor clearColor].CGColor;
    _textLayer.wrapped = YES;
    //CALayer *layer = self.navigationController.toolbar.layer; //self is a view controller contained by a navigation controller
    _textLayer.frame = CGRectMake(5,325, 310, 90);
    _textLayer.contentsScale = [[UIScreen mainScreen] scale]; // looks nice in retina displays too :)
    _textLayer.alignmentMode = kCAAlignmentJustified;
    _textLayer.masksToBounds = YES;
    [self.view.layer addSublayer:_textLayer];
}

说到底我也试过我_textLayer增加的UITextView的层以及代替self.view.layer。

请建议我怎么能实现这个功能吗?

Answer 1:

你可以只添加CATextLayer到的UIScrollView并获得滚动自由。 根据需要和contentSize为您CATextLayer帧设置滚动型的框架,并把它添加到滚动的层,这样的事情(不实际工作的代码):

UIScrollView* scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,100,100)];
CATextLayer* layer = [CATextLayer layer];
//layer init code goes here
scroll.contentSize = CGSizeMake(1000,1000);//or your actual text layer size
[scroll.layer addSublayer:layer];

和你做! 不要忘记添加滚动作为你的视图子视图。



Answer 2:

使用NSString的方法sizeWithFont:constrainedToSize:获得与给定的字体文本边界矩形,用这个尺寸然后设置图层的框架:

NSString* myString = ....;
CGSize size =     [myString sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:CGSizeMake(100, 100)];
_textlayer.frame = CGRectMake(0,0,size.width,size.height);

只是不要忘记使用合适的字体/约束大小。



文章来源: How can i make my CATextLayer object Scrollable like UITextView?