如何在 ios 中使用自定义形状创建 uiscrollview?

Posted

技术标签:

【中文标题】如何在 ios 中使用自定义形状创建 uiscrollview?【英文标题】:How to create uiscrollview with custom shapes in ios? 【发布时间】:2013-09-04 12:59:10 【问题描述】:

我想创建带有图像的自定义视图,该图像可以滚动并且仅在我创建的形状(即三角形、椭圆形等)中可见就像在 UIScrollView 中一样,图像也是可滚动的。我想尽快执行此操作,请向我建议如何执行此操作的技术或示例。提前致谢

【问题讨论】:

您放置在滚动视图上的任何视图都是可滚动的,因此您可以创建一个自定义类,从您的贝塞尔路径创建 UIImage,然后将它们添加到 UIImageViews 中的滚动视图 【参考方案1】:

这就是我要做的。我刚试过这个,它有效。您需要做的就是向包含滚动视图的视图添加一个掩码作为子视图。 (self 在这种情况下是视图本身。)

CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectInset(self.frame, 5, 5) cornerRadius:50.0f].CGPath;
self.layer.mask = maskLayer;

这是我工作代码的要点:https://gist.github.com/rcdilorenzo/6437136

【讨论】:

@Christian Di Lorenzo 有没有办法将渐变色应用到 UIScrollView 遮罩层的边界?我在 UIScrollView 上创建了形状层,当我将渐变蒙版应用到该滚动视图时,以前的形状消失了。 @RajeshMaurya:所以你想让滚动视图有渐变背景或滚动视图的外部? @ChristianDiLorenzo 我只想在滚动视图的边界上有渐变。使用渐变颜色制作 UIBezierPath 的分钟数。 @RajeshMaurya:您需要分别制作蒙版和边框。我建议在渐变边框上进行一些搜索,然后将渐变层直接添加为滚动视图的子层。

以上是关于如何在 ios 中使用自定义形状创建 uiscrollview?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自定义形状创建 QML 滑块?

如何在 Android 中使用 XML 作为可绘制对象创建自定义形状?

如何在 UIScrollView 中绘制自定义形状

如何创建自定义形状的CardView android

具有特定形状的 Android 自定义视图

在 ios 7.1 中自定义按钮形状