作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要帮助来绘制这样的东西:
有人告诉我,灰色背景条和紫色条应该绘制在不同的图层上。然后,表示一本书章节(此 slider 所涉及的内容)的点将位于这两层之上的一层上。
我已经完成了在事件栏上创建渐变并像这样绘制它的任务:
- (void)drawRect:(CGRect)rect{
self.opaque=NO;
CGRect viewRect = self.bounds;
//NSLog(@"innerRect width is: %f", innerRect.size.width);
CGFloat perPageWidth = viewRect.size.width/[self.model.book.totalPages floatValue];
NSLog(@"perpage width is: %f", perPageWidth);
CGContextRef context = UIGraphicsGetCurrentContext();
UIBezierPath *beizerPathForSegment= [UIBezierPath bezierPath];
NSArray *arrayFromReadingSessionsSet =[self.model.readingSessions allObjects];
NSArray *arrayFromAssesmentSet = [self.model.studentAssessments allObjects];
NSLog(@"array is : %@", self.model.readingSessions);
CGGradientRef gradient = [self gradient];
for (int i=0;i<[arrayFromReadingSessionsSet count]; i++) {
ReadingSession *tempRSObj= [arrayFromReadingSessionsSet objectAtIndex:i];
CGFloat pageDifference = [tempRSObj.endPage floatValue]-[tempRSObj.startPage floatValue];
NSLog(@"startpage is: %@, end page is: %@, total pages are: %@", tempRSObj.startPage, tempRSObj.endPage, self.model.book.totalPages) ;
CGRect ProgressIndicator = CGRectMake(perPageWidth*[tempRSObj.startPage floatValue], viewRect.origin.y, perPageWidth*pageDifference, viewRect.size.height);
[beizerPathForSegment appendPath:[UIBezierPath bezierPathWithRoundedRect:ProgressIndicator cornerRadius:13.0]];
}
[beizerPathForSegment addClip];
CGContextDrawLinearGradient(context, gradient, CGPointMake(CGRectGetMidX([beizerPathForSegment bounds]), CGRectGetMaxY([beizerPathForSegment bounds])),CGPointMake(CGRectGetMidX([beizerPathForSegment bounds]), 0), (CGGradientDrawingOptions)NULL);
}
如何将其移动到一个图层上,然后创建另一个图层和另一个图层,然后将它们放在另一个图层上?
TIA
最佳答案
我猜与您交谈的人指的是 CALayer 。在 iOS 中,每个 View 都有一个 CALayer 支持。而不是实现 -drawRect:
在你看来,这样做:
#import <QuartzCore/QuartzCore.h>
任何你想使用它的地方。layer
属性(property)。图层的行为很像 View ,因为您可以拥有子图层和 super 图层,并且图层具有背景颜色等属性,并且可以进行动画处理。可能对您的目的有用的几个子类是 CAGradientLayer
和 CAShapeLayer
。有关如何使用图层的更多信息,请参阅Core Animation Programming Guide .
关于ios - 如何在两个独立的图层上绘制iOS,coregraphics,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13567733/
我是一名优秀的程序员,十分优秀!