gpt4 book ai didi

ios - 有没有办法获取 UILabel 文本的 shadowPath?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:09:08 24 4
gpt4 key购买 nike

我目前正在使用 UILabel 来显示一些文本。我正在使用 CALayer 给它一个漂亮的阴影。但是:当我在屏幕上定位(和移动)很多 UILabel 元素时,性能真的很差。

我在几篇博文中读到,设置 CALayer 的 shadowPath 可以优化性能,我用圆角矩形试了一下,它确实有效。所以现在我想弄清楚如何获取 UILabel 上文本的 shadowPath。

有人有想法吗?否则,我猜我将不得不在 coregraphics 中呈现我的文本。

这是一个在矩形图层上使用 shadowPath 的示例:

        backgroundImage.layer.shadowOffset = CGSizeMake(0, 0);
backgroundImage.layer.shadowRadius = LIST_TITLE_VIEW_SHADOW_SIZE;
backgroundImage.layer.shadowOpacity = LIST_TITLE_VIEW_SHADOW_OPACITY;
backgroundImage.layer.shadowPath = [UIBezierPath bezierPathWithRect:backgroundImage.bounds].CGPath;

最佳答案

我找到了一个对我来说很有魅力的解决方案。只需像本示例中那样从标签制作图像:

            UILabel employeeName = new UILabel(new RectangleF(7, 49, this.View.Bounds.Width, 50));
employeeName.Text = "David Johnson";
employeeName.Font = UIFont.SystemFontOfSize(23);
employeeName.BackgroundColor = UIColor.Clear;
employeeName.TextColor = UIColor.White;
employeeName.Layer.ShadowColor = UIColor.Black.CGColor;
employeeName.Layer.ShadowOffset = new SizeF(1,1);
employeeName.Layer.ShadowOpacity = 10;
employeeName.Layer.ShadowRadius = 0.8f;

UIGraphics.BeginImageContextWithOptions(employeeName.Bounds.Size, false, 0);
employeeName.Layer.RenderInContext(UIGraphics.GetCurrentContext());

UIImageView employeeNameImage = new UIImageView(UIGraphics.GetImageFromCurrentImageContext());
employeeNameImage.Frame = new RectangleF(7, 49, this.View.Bounds.Width, 50);

imageView.AddSubview(employeeNameImage);

关于ios - 有没有办法获取 UILabel 文本的 shadowPath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7647722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com