Свойства, не применимые к CATextLayer
Я пытаюсь принести мой CATextLayer
текст (который является числом "1") в центре зрения, но я получил очень маленький текст, а не по центру, как показано на этом рисунке. Красный круг показан CALayer
сам объект, который является анимированным, поэтому я не хочу добавлять текст в качестве подслоя к нему. Вместо этого я добавил в качестве подслоя для просмотра. Код, который я написал для CATextLayer:
CATextLayer *numbers = [CATextLayer layer];
numbers.string = @"1";
numbers.font = [UIFont fontWithName:@"Arial" size:100.0];
numbers.foregroundColor = [UIColor blackColor].CGColor;
numbers.bounds = CGRectMake(0, 0, 200, 200);
numbers.position = self.view.center;
numbers.wrapped = NO;
[self.view.layer addSublayer:numbers];
Я надеюсь, что мой вопрос ясен. Пожалуйста, скажите мне, где я ошибаюсь? Большое спасибо.
1 ответ
редактировать
font
свойство принимает CGFontRef, а не UIFont. Вы можете создать один, используя CGFontCreateWithFontName( (CFStringRef)@"ArialMT" )
, Размер шрифта устанавливается с помощью fontSize
имущество.
Оригинальный ответ
Правильное название шрифта "ArialMT"
1 Поскольку вы используете несуществующее имя шрифта, текст получает шрифт и размер по умолчанию.
Слой фактически центрирован и 200 на 200 точек2. Проблема в том, что текст не центрирован внутри текстового слоя, а находится в верхнем левом углу. Больший шрифт может выглядеть так, как будто он почти центрирован, но все равно не будет.
Вы можете изменить способ отображения содержимого слоя (в вашем случае текста) относительно границ слоя, изменив contentsGravity
слоя что-то вроде kCAGravityCenter
если вы хотите, чтобы текст отображался по центру внутри рамки текстового слоя
- Шрифты iOS - отличный ресурс для имен, которые вы должны использовать для получения определенных шрифтов.
- В этом легко убедиться, придав текстовому слою яркий фоновый цвет, например, прозрачный синий (поскольку ваш круг красный)