0
我在UIScrollView
中创建卷尺,它具有图像中的水平线条,并且我希望以编程方式添加数字。将文本添加到UIScrollView
(注意:蓝色是帮助越来越布局右)
我尝试这样做:
for (NSInteger i = 0; i < self.maxUnits.integerValue; i++) {
static CGFloat labelWidth = 40;
CGFloat x = (halfScreen - (labelWidth/2)) + (i * self.widthOfOneFraction.floatValue * self.numberOfFractions.floatValue);
CGRect frame = CGRectMake(x-1, 41, labelWidth, 70);
UILabel *label = [[UILabel alloc] initWithFrame:frame];
label.text = [NSString stringWithFormat:@"%d", i];
label.textAlignment = NSTextAlignmentCenter;
label.textColor = [UIColor tlbBlueColor];
label.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:20.0];
[self addSubview:label];
}
其中一期工程,但使用约40MB内存。我认为,在一个CATextLayer添加文字可能更有效,但我不能得到它的工作:
for (NSInteger i = 0; i < self.maxUnits.integerValue; i++) {
CATextLayer *label = [[CATextLayer alloc] init];
[label setFont:@"HelveticaNeue-Light"];
[label setFontSize:20];
[label setFrame:frame];
[label setString:[NSString stringWithFormat:@"%d", i]];
[label setAlignmentMode:kCAAlignmentCenter];
[label setForegroundColor:[[UIColor whiteColor] CGColor]];
[self.layer addSublayer:label];
}
数字不会出现在屏幕上。
所以我的问题是,我可以使第一种方法更有效率,如果不是第二种方式更有效,当它工作,如果是的话如何让它工作?
我希望你能概括你的实现像水平表视图。您可以在屏幕上滚动时轻松地重复使用这些数字,而不是一次性将所有数字强制全部放入视图层次结构中。 – CodaFi
我想知道如何让它实际上只画出3倍的屏幕宽度,然后在滑动时重绘,但是由于您的滚动速度非常快,因此可能会降低性能。 – Lewis42