gpt4 book ai didi

ios - 如何在两个独立的图层上绘制iOS,coregraphics

转载 作者:行者123 更新时间:2023-11-29 04:16:57 24 4
gpt4 key购买 nike

我需要帮助来绘制这样的东西: enter image description here

有人告诉我,灰色背景条和紫色条应该绘制在不同的图层上。然后,表示一本书章节(此 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:在你看来,这样做:

  1. link with QuartzCore
  2. #import <QuartzCore/QuartzCore.h>任何你想使用它的地方。
  3. 使用您的 View layer 属性(property)。

图层的行为很像 View ,因为您可以拥有子图层和 super 图层,并且图层具有背景颜色等属性,并且可以进行动画处理。可能对您的目的有用的几个子类是 CAGradientLayer CAShapeLayer 。有关如何使用图层的更多信息,请参阅Core Animation Programming Guide .

关于ios - 如何在两个独立的图层上绘制iOS,coregraphics,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13567733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com