【问题标题】:UIView multiple effectsUIView 多种效果
【发布时间】:2012-01-28 11:58:18
【问题描述】:

我正在使用 iPad 版本的应用程序,但遇到了问题。我想做一个具有多种视觉效果的UItableViewUIView

  • 圆角半径 (3px)
  • 内阴影(黑色,20%,10px)
  • 投影(黑色,30%,5px)

结果必须类似于 iPad 上内置的Reminders.app。这是我想要实现的 Photoshop 预览:

如您所见(如果不能,请以 100% 缩放打开此图像),左侧有 UITableView,右侧有 UIView。两个视图都有圆角半径、内阴影和投影。

我的问题是:我怎样才能在不损失性能的情况下以编程方式实现这种效果(当我尝试使用 layer.cornerRadiuslayer.shadow... 执行此操作时,我的 TableView 已经失去了性能)。

任何帮助将不胜感激。

【问题讨论】:

  • 实际上,最简单、最快捷的方法是使用图像,并使 backgroundColor = clear color;
  • 但我希望这些观点以编程方式改变他们的框架。图像会失真。
  • 为什么他们会被扭曲?您可以使用 stretchableImageWithLeftCapWidth:topCapHeight: 定义应该拉伸图像的哪个部分。所以你可以定义一个像素大小,它在整个高度上重复,加上图像的底部和顶部

标签: iphone performance cocoa-touch uiview uikit


【解决方案1】:

在层上设置shadowPath 是良好性能的关键。它接受CGPath,所以像self.tableView.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.tableView.bounds].CGPath; 这样的东西应该会有很大帮助。

【讨论】:

  • 你没有回答我的问题...如何一次制作3个效果
  • 我正在解决您最初尝试期间对性能的担忧。没有自己绘制的内部阴影很难。只需在表格视图的图层上设置这些属性,就可以实现投影和角半径。对于内部阴影,您可以在透明图像上创建可拉伸的黑色,可以扩展到任何帧。在适当的帧创建一个包含阴影的图像,并将其设置为新CALayer 的内容。将该层添加为表格视图层的子层。您可能需要在 UIKit 级别工作以处理帧变化的动画。
  • 好的,我创建了一个 UIImageView 并将其添加到表格视图上方。但是当旋转我的 iPad 框架属性时,动画有点难看。不流畅..有什么建议吗?
  • 好吧,我意识到这不是 UIImageView 的错。感谢您的建议!
  • 对于那些不精通英语的人(比如世界上很大一部分人口),lynchpin可以翻译为“关键”。
猜你喜欢
  • 2018-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-30
  • 1970-01-01
  • 1970-01-01
  • 2011-05-24
相关资源
最近更新 更多