我有一个UIScrollView,我想绘制一条UIScrollView contentHeight高度的垂直线。如何在不牺牲性能的情况下轻松完成此操作?我正在考虑使用具有非常大的高度的UIVIew(因为我们不知道scrollView的contentHeight将是什么)并将其添加为UIScrollView的子视图。有没有比这更好的方法?
该行基本上是10px宽度,灰色,从scrollView的顶部到底部。
这是我现在所拥有的,我基本上覆盖了UIScrollView drawRect:
- (void)drawRect:(CGRect)rect
{
if (shouldDrawVerticalLineForProfile){
CGContextRef context = UIGraphicsGetCurrentContext();
CGColorRef separatorColor = [UIColor colorWithRed:47.0/255.0 green:47.0/255.0
blue:47.0/255.0 alpha:1.0].CGColor;
// Add at bottom
CGPoint startPoint = CGPointMake(30, 0);
CGPoint endPoint = CGPointMake(30, 10000);
CGContextSaveGState(context);
CGContextSetLineCap(context, kCGLineCapSquare);
CGContextSetStrokeColorWithColor(context, separatorColor);
CGContextSetLineWidth(context, 5.0);
CGContextMoveToPoint(context, startPoint.x + 0.5, startPoint.y + 0.5);
CGContextAddLineToPoint(context, endPoint.x + 0.5, endPoint.y + 0.5);
CGContextStrokePath(context);
CGContextRestoreGState(context);
}
}
答案 0 :(得分:5)
-(void)viewDidLoad {
[super viewDidLoad];
UIView *verticalBar = [[[UIView alloc] init] autorelease];
[verticalBar setBackgroundColor:[UIColor grayColor]];
[verticalBar setFrame:CGRectMake(0,0,10,[scrollView contentSize].height)];
[[self view] addSubview:verticalBar];
}
您不需要“非常大的高度”,因为您通过scrollView知道最大高度。
答案 1 :(得分:0)
- (void)drawRect:(CGRect)rect {
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(ctx, [UIColor colorWithRed: 0.0 green:0.0 blue:0.0 alpha:.6].CGColor);
CGContextSetLineWidth(ctx, 1);
CGContextBeginPath(ctx);
CGContextMoveToPoint(ctx, 0, CGRectGetMaxY(rect) - 2);
CGContextAddLineToPoint(ctx, CGRectGetMaxX(rect), CGRectGetMaxY(rect) - 2);
CGContextStrokePath(ctx);
CGContextSetLineWidth(ctx, 2);
CGContextSetStrokeColorWithColor(ctx, [UIColor colorWithRed: .34 green:.35 blue:.352 alpha:.6].CGColor);
CGContextBeginPath(ctx);
CGContextMoveToPoint(ctx, 0, CGRectGetMaxY(rect));
CGContextAddLineToPoint(ctx, CGRectGetMaxX(rect), CGRectGetMaxY(rect));
CGContextStrokePath(ctx);
}
将此添加到您的UIScrollView控制器
我给的代码你绘制了一条水平线,但你应该能够适应它。