Подтвердить что ты не робот

Как применить тень текста к UITextView?

На самом деле я люблю UILabel. Они милые. Теперь мне нужно было перейти к UITextView, потому что UILabel не выравнивает текст по вертикали вверху. Черт. Мне действительно нужна текстовая тень. UILabel имеет его. UITextView похоже, не имеет этого. Но я предполагаю, что этот парень просто использует те же базовые дополнения UIKit NSString? Может быть, у кого-то уже есть решение этой проблемы? Что бы я перезаписал?

4b9b3361

Ответ 1

text.layer.shadowColor = [[UIColor whiteColor] CGColor];
text.layer.shadowOffset = CGSizeMake(1.0f, 1.0f);
text.layer.shadowOpacity = 1.0f;
text.layer.shadowRadius = 1.0f;

И не забудьте добавить вверх:

#import <QuartzCore/QuartzCore.h>

Ответ 2

Ответ с

text.layer.shadowColor

добавляет тень ко всему текстуру, возможно, он работает, но добавляет тень не только к тексту.

Правильный ответ:

CALayer *textLayer = ((CALayer *)[textView.layer.sublayers objectAtIndex:0]);
textLayer.shadowColor = [UIColor whiteColor].CGColor;
textLayer.shadowOffset = CGSizeMake(0.0f, 1.0f);
textLayer.shadowOpacity = 1.0f;
textLayer.shadowRadius = 1.0f;

Ответ 3

Swift 3


let textView = UITextView(frame: view.frame)
textView.font = UIFont(name: "Helvetica", size: 64.0)
textView.textColor = .red
textView.text = "Hello World"

textView.layer.shadowColor = UIColor.black.cgColor
textView.layer.shadowOffset = CGSize(width: 2.0, height: 2.0)
textView.layer.shadowOpacity = 1.0
textView.layer.shadowRadius = 2.0
textView.layer.backgroundColor = UIColor.clear.cgColor

Swift 2.3


let textView = UITextView(frame: view.frame)
textView.font = UIFont(name: "Helvetica", size: 64.0)
textView.textColor = UIColor.redColor()
textView.text = "Hello World"    

textView.layer.shadowColor = UIColor.blackColor().CGColor
textView.layer.shadowOffset = CGSize(width: 2.0, height: 2.0)
textView.layer.shadowOpacity = 1.0
textView.layer.shadowRadius = 2.0
textView.layer.backgroundColor = UIColor.clearColor().CGColor

Ответ 4

введите описание изображения здесь

Этот пример Swift использует атрибутный метод добавления теневого текста. См. этот ответ для получения дополнительной информации об атрибутных строках в Swift. Этот метод (в отличие от использования метода ) дает вам возможность настроить тень на диапазон текста, если вы хотите.

// Create a string
let myString = "Shadow"

// Create a shadow
let myShadow = NSShadow()
myShadow.shadowBlurRadius = 3
myShadow.shadowOffset = CGSize(width: 3, height: 3)
myShadow.shadowColor = UIColor.gray

// Create an attribute from the shadow
let myAttribute = [ NSAttributedStringKey.shadow: myShadow ]

// Add the attribute to the string
let myAttrString = NSAttributedString(string: myString, attributes: myAttribute)

// set the attributed text on a label
myLabel.attributedText = myAttrString // can also use with UITextView

Обновлен для Swift 4

Ответ 5

В iOS 6+ используйте атрибутный текст

NSShadow * shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor blackColor];
shadow.shadowOffset = CGSizeMake(2, 2);

NSDictionary * textAttributes =
@{ NSForegroundColorAttributeName : [UIColor blueColor],
   NSShadowAttributeName          : shadow,
   NSFontAttributeName            : [UIFont boldSystemFontOfSize:20] };

textView.attributedText = [[NSAttributedString alloc] initWithString:@"Hello" 
                                                          attributes:textAttributes];

Hello example

Ответ 6

Это зависит от версии iOS, которую вы используете. Начиная с iOS 6 поддерживается одна тень, вы устанавливаете ее как атрибут в NSAttributedString, который затем устанавливаете на этикетке.