で巻尺を作成して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 の RAM を使用します。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];
}
数字は画面に表示されません。
したがって、私の質問は、最初の方法をより効率的にすることはできますか? そうでない場合は、機能するときに2番目の方法をより効率的にすることです.