【问题标题】:How to set CATextLayer in video according to frame?如何根据帧设置视频中的CATextLayer?
【发布时间】:2015-10-25 03:11:54
【问题描述】:

我尝试了很多想法,但还没有成功,我的问题是我有一个视频,我提供了一种在视频上写入文本并将文本拖放到视频上的功能现在我想设置 CATextlayer由用户设置的正确位置的视频,但它没有显示在正确的位置,所以请帮助我。

这是我用于此目的的代码。

CATextLayer *titleLayer = [CATextLayer layer];//<========code to set the text
titleLayer.string = self.strText;
titleLayer.font = (__bridge CFTypeRef)(self.fonts);;
titleLayer.fontSize = titleLayer.fontSize;
titleLayer.position = CGPointMake (titleLayer.fontSize,titleLayer.fontSize);
//?? titleLayer.shadowOpacity = 0.5;
titleLayer.alignmentMode = kCAAlignmentCenter;
titleLayer.bounds = CGRectMake(self.rectText.origin.x,self.rectText.origin.y-52, 480, 480); //You may need to adjust this for proper display

[titleLayer setBackgroundColor:[UIColor redColor].CGColor];
[parentLayer addSublayer:titleLayer]; //ONLY IF WE ADDED TEXT

【问题讨论】:

    标签: ios objective-c iphone avfoundation calayer


    【解决方案1】:

    您的代码看起来不错,但不确定提供的框架是错误还是正确。如果您提供了正确的框架,则添加此代码,最后:-

    [titleLayer display];
    

    现在可以使用了!

    【讨论】:

    • 不工作,我在 iPhone 5 上测试过,我的视频屏幕是正方形 320*320,视频尺寸是 480*480,如果我们需要添加更多内容,请提出建议。
    【解决方案2】:

    解决了这个问题,看我下面的代码。这与 video 配合得很好。

    CATextLayer *titleLayer = [CATextLayer layer];
    titleLayer.string = self.strText;
    titleLayer.font = (__bridge CFTypeRef)(self.fonts);
    titleLayer.fontSize = fontsize;
    titleLayer.masksToBounds = NO;
    titleLayer.foregroundColor = self.textColor.CGColor;
    titleLayer.alignmentMode = kCAAlignmentCenter;
    //[self.txtVideoText setBackgroundColor:[UIColor colorWithHue:255.0/255.0 saturation:255.0/255.0 brightness:255.0/255.0 alpha:0.4]];
    //[self setAnchorPoint:self.txtVideoText.layer.anchorPoint forView:self.txtVideoText layer:titleLayer];
    titleLayer.anchorPoint = CGPointMake(0.5, 0.5);
    titleLayer.frame = CGRectMake(xx,-(yy-CGRectGetHeight(self.viewHeader.frame)), 480, 480); //You may need to adjust this for proper display
    [parentLayer addSublayer:titleLayer]; //ONLY IF WE ADDED TEXT
    

    【讨论】:

      【解决方案3】:

      解决了这个问题,看我下面的代码。视频效果很好

      CGFloat stickerX = (videoSize.width * (newsticker.frame.origin.x+imageView2.frame.origin.x))/_StickerView.frame.size.width;
      CGFloat stickerY = (videoSize.height * (newsticker.frame.origin.y+imageView2.frame.origin.y))/_StickerView.frame.size.height;
      
      titleLayer.frame = CGRectMake(stickerX,-(StickerY-CGRectGetHeight(self.viewHeader.frame)), 480, 480); //You may need to adjust this for proper display
      

      【讨论】:

        猜你喜欢
        • 2013-04-13
        • 1970-01-01
        • 2016-07-18
        • 1970-01-01
        • 1970-01-01
        • 2013-11-05
        • 2013-03-29
        • 1970-01-01
        • 2013-07-20
        相关资源
        最近更新 更多