如何在 UIScrollView 中绘制自定义形状
Posted
技术标签:
【中文标题】如何在 UIScrollView 中绘制自定义形状【英文标题】:How to draw custom shapes inside UIScrollView 【发布时间】:2014-03-03 08:54:16 【问题描述】:您好,我正在尝试使用 UISCrollView 创建自己的时间线视图
-
我想创建大小为 1200、50 的年视图(需要使用石英库绘制)。
示例代码是:
- (void)drawYearScaleMain
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(context, 1.0, 0.6, 0.2, 0.8);
CGContextMoveToPoint(context, self.bounds.origin.x, self.bounds.origin.y);
CGContextAddLineToPoint(context, self.contentSize.width, self.bounds.origin.y);
CGContextAddLineToPoint(context, self.contentSize.width, 50);
CGContextAddLineToPoint(context, self.bounds.origin.x, 50);
CGContextAddLineToPoint(context, self.bounds.origin.x, self.bounds.origin.y);
CGContextFillPath(context);
-
现在我想使用相同类型的绘图代码创建月视图:
示例代码:
- (void)drawMonthScaleSub
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(context, 0.0, 0.6, 0.2, 0.8);
CGFloat topLeftX = self.bounds.origin.x;
CGFloat topLeftY = 50;
CGFloat width = 98;
CGFloat height = 30;
for(int count = 0; count<12; count++)
CGRect frame = CGRectMake(topLeftX, topLeftY, width, height);
CGContextFillRect(context, frame);
topLeftX = topLeftX + 10 + width;
但是如果我滚动我的滚动视图,我在这个视图中绘制的内容不会滚动,如果我的代码有任何错误,或者有任何其他最佳方式来实现这一点。
请给我建议。
提前致谢。
【问题讨论】:
我认为你错过了在滚动视图中添加的所有内容......并为滚动视图提供适当的内容大小 尝试使用 UIView 子类并使用它的drawRect:
方法进行绘制,但它作为滚动视图中的子视图。
我在 UIScrollView 子类的 drawRect: 方法中调用了这个方法。仍然在滚动视图时,自定义绘制不会随着视图滚动。我的滚动视图 contentSize 是 (1200, 1200)
【参考方案1】:
我认为你应该创建一个 UIView 的子类并重新实现DrawRect:
方法。然后你应该把这个视图放在你的滚动视图中。
【讨论】:
以上是关于如何在 UIScrollView 中绘制自定义形状的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 WPF 中的 TextShape 类绘制自定义形状?
如何在 Android 中使用 XML 作为可绘制对象创建自定义形状?