UILabelをサークルの中心に配置したいのですが、ラベルの位置に影響しないようです。 CGRectフレームの高さを変えるだけで、ラベルの位置に影響を与えるように見えます。他の値を変更しても、位置にはまったく影響しません。UILabelの位置を円にします
ここに私のCircle.mコードは、あなたがdrawRect:
に新しいUIView
Sを割り当てるべきではありません(とUILabel
がUIView
のサブクラスである)
- (id)initWithFrame:(CGRect)frame radius:(CGFloat)aRadius color:(UIColor*) aColor {
self = [super initWithFrame:frame];
if (self) {
self.opaque = NO;
[self setRadius:aRadius];
[self setColor:aColor];
}
return self;
}
- (void)drawRect:(CGRect)rect
{
NSString *string = @"1";
UIFont* font = [UIFont systemFontOfSize:80];
UILabel *label = [[UILabel alloc] init];
label.text = string;
label.textColor = [UIColor whiteColor];
label.font = font;
CGRect frame = label.frame;
frame = CGRectMake(10, 10, 0, 85);
label.frame = frame;
CGContextRef contextRef = UIGraphicsGetCurrentContext();
[color setFill];
circle = CGRectMake(0, 0, radius, radius);
CGContextAddEllipseInRect(contextRef, circle);
CGContextDrawPath (contextRef, kCGPathFill);
[label drawRect:circle];
}
と私のviewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
CGFloat radius = 70;
CGRect position = CGRectMake(0, 0, radius, radius);
Circle *myCircle = [[Circle alloc] initWithFrame:position radius:radius color:[UIColor redColor]];
[self.view addSubview:myCircle];
}
あなたは0の高さは何も表示されないことを認識しない、右? – CodaFi
合意すると、ラベルフレームの高さは0になりません。また、円の直径が少なくともその2倍であるため、「半径」の幅と高さを持つ円の枠を見るにはちょっと変です。ラベルの幅を円の2倍に設定するなどの単純な作業を行う場合は、ラベルが '[label setTextAlignment:UITextAlignmentCenter];を使用していることを確認したいでしょう。テキストがそのフレーム内で中央に揃っていることを確認するだけですか? – Rob