无背景图片的 UITextView 特效

Posted

技术标签:

【中文标题】无背景图片的 UITextView 特效【英文标题】:Special effect on UITextView with no background image 【发布时间】:2012-12-04 15:01:55 【问题描述】:

我希望我的 UITextView 具有附加图片中的特殊阴影边框。

如何在不定位背景图片的情况下在 xcode 4.4 中实现它?

【问题讨论】:

【参考方案1】:

我不确定这是否只能通过自定义绘图(即 Quartz/Core Graphics)实现。 如果可能的话,我仍然会使用预渲染的图像。请查看this post。

但这可能接近预期的效果:

    [yourTextView.layer setBackgroundColor: [[UIColor whiteColor] CGColor]];
    [yourTextView.layer setBorderColor: [[UIColor grayColor] CGColor]];
    [yourTextView.layer setBorderWidth: 1.0];
    [yourTextView.layer setCornerRadius: 8.0f];
    [yourTextView.layer setMasksToBounds: YES];

别忘了导入:

#import <QuartzCore/QuartzCore.h>

【讨论】:

这不会给我阴影效果。此外,UITextView 的高度可以是动态的【参考方案2】:

这是我为实现外观所做的工作:

创建一个容器视图,例如 m 宽 x n 高。设置为clip subviews,并给它的CALayer一个圆角半径

使用矩形视图创建文本框,设置圆角半径,并设置其原点。y 为一些小数字 - 比如说 8。调整高度使其偏移 2 倍

创建一个使用 CAGradient 层的 UIView 子类,并让渐变使用从顶部开始的线性渐变,并随着 y 的增加而变浅。

如上,创建另一个渐变视图,渐变从底部开始向上移动(白色),或者只使用纯白色视图

将第一个渐变视图添加到容器视图,然后是第二个,然后是文本框。

第二个渐变视图需要淡化成清晰的颜色,这样它就不会阻挡它下面的视图(你可以玩弄两个“效果”视图的顺序。

【讨论】:

你有它的代码示例吗?而且我不知道 UITextView 的大小是多少 - 因为它应该是所有的相同代码 抱歉没有代码。你会发现很多关于如何使用 CAGradientLayer 的示例。一旦你让它或多或少地工作,文本视图可以是任何东西——一个 UIView 子类、一个标签、一个文本视图等。你有很多点——为工作代码投入 100 分的赏金,如果有人(寻找积分!)没有很快回应。索要在 Dropbox 或等价物上发布的示例项目(我自己为获得赏金所做的工作)。

以上是关于无背景图片的 UITextView 特效的主要内容,如果未能解决你的问题,请参考以下文章

这些例子的特效很炫,感觉的同学可以研究学习一下

这些例子的特效很炫,感觉的同学可以研究学习一下

UITextView 背景图像不适合 UITextView 框架的框架大小

UITextView 格线背景但线高错误

three.js 粒子特效

如何通过点击 UITextView 中的特定字符来显示圆角灰色背景?