标签: calayer

如何清除CATextLayer中的文本

我做了CALayer一个添加CATextLayer,文字出来模糊.在文档中,他们谈论"亚像素抗锯齿",但这对我来说并不重要.任何人都有一个代码片段,CATextLayer使用一些明确的文本?

以下是Apple文档中的文字:

注意:CATextLayer在渲染文本时禁用子像素抗锯齿.只有在光栅化的同时将文本合成到现有的不透明背景中时,才能使用子像素抗锯齿来绘制文本.在将背景像素编织成文本像素之前,无法单独绘制子像素抗锯齿文本,无论是图像还是图层.将图层的opacity属性设置为YES不会更改渲染模式.

第二句话暗示一个人可以获得好看的文本,如果composites它变成一个existing opaque background at the same time that it's rasterized. 很好的,但我如何合成它,你如何给它一个不透明的背景,你如何光栅化它?

他们在Kiosk菜单示例中使用的代码是这样的:(它是OS X,而不是iOS,但我认为它有效!)

NSInteger i;
for (i=0;i<[names count];i++) {
    CATextLayer *menuItemLayer=[CATextLayer layer];
    menuItemLayer.string=[self.names objectAtIndex:i];
    menuItemLayer.font=@"Lucida-Grande";
    menuItemLayer.fontSize=fontSize;
    menuItemLayer.foregroundColor=whiteColor;
    [menuItemLayer addConstraint:[CAConstraint
         constraintWithAttribute:kCAConstraintMaxY
                      relativeTo:@"superlayer"
                       attribute:kCAConstraintMaxY
                          offset:-(i*height+spacing+initialOffset)]];
    [menuItemLayer addConstraint:[CAConstraint
         constraintWithAttribute:kCAConstraintMidX
                      relativeTo:@"superlayer"
                       attribute:kCAConstraintMidX]];
    [self.menuLayer addSublayer:menuItemLayer];
} // end of for loop 
Run Code Online (Sandbox Code Playgroud)

谢谢!


编辑:添加我实际使用的代码导致文本模糊.这是来自我发布的一个相关问题,即添加一个UILabel而不是一个CATextLayer但是得到一个黑盒子. http://stackoverflow.com/questions/3818676/adding-a-uilabels-layer-to-a-calayer-and-it-just-shows-black-box

CATextLayer* upperOperator = [[CATextLayer alloc] init];
CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();
CGFloat components1[4] = {1.0, 1.0, …
Run Code Online (Sandbox Code Playgroud)

text core-animation calayer ios

91
推荐指数
4
解决办法
3万
查看次数

UIView图层的内阴影效果?

我有以下CALayer:

CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = CGRectMake(8, 57, 296, 30);
gradient.cornerRadius = 3.0f;
gradient.colors = [NSArray arrayWithObjects:(id)[RGB(130, 0, 140) CGColor], (id)[RGB(108, 0, 120) CGColor], nil];
[self.layer insertSublayer:gradient atIndex:0];
Run Code Online (Sandbox Code Playgroud)

我想为它添加内部阴影效果,但我不太清楚如何做到这一点.我想我会被要求在drawRect中绘制,但是这会在其他UIView对象之上添加图层,因为它应该是一些按钮背后的条形图,所以我不知道该怎么做?

我可以添加另一个图层,但是再次,不知道如何实现内部阴影效果(如下所示:

在此输入图像描述

帮助赞赏......

iphone core-graphics calayer

91
推荐指数
9
解决办法
8万
查看次数

为什么maskToBounds = YES会阻止CALayer阴影?

使用以下代码片段,我将向我的UIView添加阴影效果.哪个效果很好.但是只要我将视图的masksToBounds属性设置为YES即可.投影效果不再呈现.

self.myView.layer.shadowColor = [[UIColor blackColor] CGColor];
self.myView.layer.shadowOpacity = 1.0;
self.myView.layer.shadowRadius = 10.0;
self.myView.layer.shadowOffset = CGSizeMake(0.0f, 0.0f);
self.myView.layer.cornerRadius = 5.0;
self.myView.layer.masksToBounds = YES; // <-- This is causing the Drop shadow to not be rendered
UIBezierPath *path = [UIBezierPath bezierPathWithCurvedShadowForRect:self.myView.bounds];
self.myView.layer.shadowPath = path.CGPath;
self.myView.layer.shouldRasterize = YES;
Run Code Online (Sandbox Code Playgroud)

你有什么想法吗?

objective-c calayer uiview ios

81
推荐指数
3
解决办法
5万
查看次数

iOS白色到透明渐变层是灰色的

我有一个CAGradientLayer插入到应用程序底部弹出的这个小细节视图的底部.正如你所看到的,我将颜色从白色设置为清晰,但是出现了这种奇怪的灰色色调.有任何想法吗?

    // Set up detail view frame and gradient
    [self.detailView setFrame:CGRectMake(0, 568, 320, 55)];

    CAGradientLayer *layer = [CAGradientLayer layer];
    layer.frame = self.detailView.bounds;
    layer.colors = [NSArray arrayWithObjects:(id)[UIColor whiteColor].CGColor, (id)[UIColor clearColor].CGColor, nil];
    layer.startPoint = CGPointMake(1.0f, 0.7f);
    layer.endPoint = CGPointMake(1.0f, 0.0f);
    [self.detailView.layer insertSublayer:layer atIndex:0];
Run Code Online (Sandbox Code Playgroud)

这是有问题的观点:

这是有问题的观点

iphone calayer uiview ios cagradientlayer

79
推荐指数
4
解决办法
2万
查看次数

UIView动画与CALayers

我正在努力用CALayer概念化动画而不是UIView自己的动画方法.把" 核心动画 "扔进去,好吧,也许有人可以从高层次上清楚地表达这些概念,这样我就可以更好地想象发生了什么,以及为什么我想把UIView动画(我现在很熟悉)迁移到CALayer iPhone上的动画.Cocoa-Touch中的每个视图都会自动获取一个图层.而且,似乎你可以为一个和/或另一个制作动画?!?甚至将它们混合在一起?!?但为什么?线路在哪里?每个人的赞成/赞成是什么?

核心动画编程指南立即跳转到层和计时类,我认为需要退一步,理解为什么这些不同的部分存在以及如何相互关联.

core-animation calayer caanimation uiviewanimation ios

75
推荐指数
4
解决办法
1万
查看次数

你如何立即移动CALayer(没有动画)

我正在尝试在iOS应用中拖动CALayer.

一旦我改变它的位置属性,它就会尝试动画到新位置,并在整个地方闪烁:

 layer.position = CGPointMake(x, y)
Run Code Online (Sandbox Code Playgroud)

如何立即移动CALayers?我似乎无法理解Core Animation API.

cocoa-touch core-animation objective-c calayer ios

74
推荐指数
5
解决办法
2万
查看次数

如何用CAShapeLayer和UIBezierPath绘制一个光滑的圆?

我试图通过使用CAShapeLayer并在其上设置圆形路径来绘制一个描边圆.但是,这种方法在渲染到屏幕时的效果始终低于使用borderRadius或直接在CGContextRef中绘制路径.

以下是所有三种方法的结果: 在此输入图像描述

请注意,第三个渲染效果不佳,尤其是在顶部和底部的笔划内.

将该contentsScale属性设置为[UIScreen mainScreen].scale.

这是我对这三个圆圈的绘图代码.使CAShapeLayer顺利绘制的缺失是什么?

@interface BCViewController ()

@end

@interface BCDrawingView : UIView

@end

@implementation BCDrawingView

- (id)initWithFrame:(CGRect)frame
{
    if ((self = [super initWithFrame:frame])) {
        self.backgroundColor = nil;
        self.opaque = YES;
    }

    return self;
}

- (void)drawRect:(CGRect)rect
{
    [super drawRect:rect];

    [[UIColor whiteColor] setFill];
    CGContextFillRect(UIGraphicsGetCurrentContext(), rect);

    CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), NULL);
    [[UIColor redColor] setStroke];
    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 1);
    [[UIBezierPath bezierPathWithOvalInRect:CGRectInset(self.bounds, 4, 4)] stroke];
}

@end

@interface BCShapeView : UIView

@end

@implementation BCShapeView

+ (Class)layerClass
{
    return [CAShapeLayer class];
} …
Run Code Online (Sandbox Code Playgroud)

core-graphics calayer uikit cashapelayer ios

74
推荐指数
2
解决办法
4万
查看次数

CALayer IOS上的自动布局约束

嗨,我正在开发iPhone应用程序,我试图为edittext设置一个边框.我是按照以下方式做到的:

 int borderWidth = 1;
CALayer *leftBorder = [CALayer layer];

leftBorder.borderColor = [UIColor whiteColor].CGColor;
leftBorder.borderWidth = borderWidth;

leftBorder.frame = CGRectMake(0, textField.frame.size.height - borderWidth, textField
                              .frame.size.width, borderWidth);
[textField.layer addSublayer:leftBorder];
Run Code Online (Sandbox Code Playgroud)

我对IB中的edittext设置了一些约束,这样当我旋转设备时,它会根据它调整文本字段的宽度.我的问题是调整edittext的宽度而不是调整我为编辑文本设置的CALayer的宽度.所以我想我必须为我的CALayer项目设置一些约束.但我不知道该怎么做.有人知道吗?需要帮忙.谢谢.

calayer ios autolayout

73
推荐指数
5
解决办法
4万
查看次数

CALayer:仅在一侧添加边框

我可以用这种方式为CALayer添加边框:

[webView.layer setBorderColor: [[UIColor colorWithRed:0.6 green:0.7 blue:0.2 alpha:1] CGColor]];
[webView.layer setBorderWidth: 2.75];   
Run Code Online (Sandbox Code Playgroud)

但是,是否可以仅在一侧添加边框?我只需要底部的边框.或者我可以用其他属性来达到这个目的,例如框架,边界,面具,......?

在此输入图像描述

谢谢你的帮助!


b控制-V

        UIWebView *webView = [[UIWebView alloc] init];
        CALayer *webViewLayer = webView.layer;

        // now you can do a lot of stuff like borders:
        [webViewLayer setBorderColor: [[UIColor greenColor] CGColor]];
        [webViewLayer setBorderWidth: 2.75];    
Run Code Online (Sandbox Code Playgroud)

请查看CALayer文档:https: //developer.apple.com/documentation/quartzcore/calayer

看看这里:http: //iosdevelopertips.com/cocoa/add-rounded-corners-and-border-to-uiwebview.html

iphone core-animation objective-c calayer

62
推荐指数
5
解决办法
6万
查看次数

UIView的clipsToBounds和CALayer的maskToBounds之间的关系如何?

A UIView有一个CALayer.这很确定.但两者似乎都提供了同样的东西.

如果我设置clipsToBounds=YES,这还会设置图层masksToBounds=YES吗?为什么不同名字?有谁知道?

core-animation calayer uikit uiview ios

57
推荐指数
2
解决办法
1万
查看次数