Я хочу разместить UILabel в центре моего круга, но я не могу повлиять на положение метки. Я могу только повлиять на положение метки, изменив высоту кадра CGRect. изменение других значений вообще не влияет на позицию.Позиция UILabel в круге
вот мой Circle.m код
- (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 высота рамки метки не имеет смысла. А также немного странно видеть рамку круга с шириной и высотой «радиуса», потому что диаметр круга по крайней мере вдвое больше, верно? И если вы собираетесь сделать что-то простое, например, чтобы ширина метки была в два раза больше радиуса круга, вы, вероятно, также захотите убедиться, что ваша метка использует '[label setTextAlignment: UITextAlignmentCenter];', правильно? Просто чтобы убедиться, что текст выровнен по центру внутри этого кадра? – Rob