我試圖通過使用AVComposition來創建電影生成應用程序,並且在製作標題框時遇到了麻煩。 每一幀實際上是一個calayer和標題層是在其他幀的頂部。CALayer - 如何創建具有純色背景和透明文本的圖像?
標題(文本)需要在黑色背景下透明,以便他們可以在標題文本字母下看到第一個內容框架的某些部分。
我搜索了大部分關於calayer mask的文章,但沒有任何幫助。 我認爲這篇文章(How to make only the part covered by text/title transparent in a UIView in IOS)很有幫助,並且按照Dave的方式編碼,但只有白屏。
這裏是我做了什麼:
// create UILabel from the title text
CGRect rectFrame = CGRectMake(0, 0, videoSize.width, videoSize.height);
UILabel *lbTitle = [[UILabel alloc] initWithFrame:rectFrame];
lbTitle.text = self.titleText;
lbTitle.font = [UIFont fontWithName:@"Helvetica" size:60];
lbTitle.textColor = [UIColor blackColor];
lbTitle.backgroundColor = [UIColor whiteColor];
// get title image and create mask layer
UIGraphicsBeginImageContextWithOptions(lbTitle.bounds.size, TRUE, [[UIScreen mainScreen] scale]);
[lbTitle.layer renderInContext:UIGraphicsGetCurrentContext()];
CGImageRef viewImage = [UIGraphicsGetImageFromCurrentImageContext() CGImage];
UIGraphicsEndImageContext();
CALayer *maskLayer = [CALayer layer];
maskLayer.contents = (__bridge id)viewImage;
maskLayer.frame = rectFrame;
// create title background layer and set mastLayer as mast layer of this layer
// this layer corresponds to "UIView's layer" in Dave's method
CALayer *animatedTitleLayer = [CALayer layer];
animatedTitleLayer.backgroundColor = [UIColor whiteColor].CGColor;
animatedTitleLayer.mask = maskLayer;
animatedTitleLayer.frame = rectFrame;
...
[view.layer addSubLayer:animatedTitleLayer];
在這裏,我用animatedTitleLayer作爲標題背景(黑色背景),但我看到的是白色的屏幕。
任何人都可以幫到我嗎?提前致謝。
我認爲你缺少添加遮罩層? '[self.view.layer addSublayer:animatedTitleLayer]' – Mani
對不起,我錯過了寫這行。它已經在那裏,我已經編輯它。 – Alex