Изменение размера шрифта KerningAdjustment, почему? - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть UITextView и мне нужно увеличить расстояние между символами.Я уже применил UIStringAttributeKey.KerningAdjustment, и это сработало, но теперь попытка уменьшить UIFont с UITextView перестает работать.

ViewController:

textView.ChangeSpaceBetweenCharacters(8.0f);


TextViewExtension:

public static void ChangeSpaceBetweenCharacters(this UITextField textField, float space)
        {
            textField.WeakDefaultTextAttributes.SetValueForKey(NSObject.FromObject((nfloat)space), UIStringAttributeKey.KerningAdjustment);
        }

When I don't change the font it works ...

и попытался ...

ViewController:

textView.ChangeSpaceBetweenCharacters(8.0f, UIFont("ArialMT", 13);


TextViewExtension:

public static void ChangeSpaceBetweenCharacters(this UITextField textField, float space, UIFont font)
        {
            textField.AttributedText = new NSAttributedString(textField.Text, new UIStringAttributes
            {
                Font = font,
                KerningAdjustment = space

            });
        }

Then when I change the font it looks like this ...

Я уже пытался изменить UIFont до и после UIStringAttributeKey.KerningAdjustment, но он все еще не работал.

Я провел много исследований и до сих пор не могу понять, что происходит.

Кто-нибудь может мне помочь?

С наилучшими пожеланиями, Рафаэль Сантос

1 Ответ

0 голосов
/ 27 сентября 2019

Я думаю, что проблема может быть вызвана используемым вами методом шрифта, я не могу заставить его работать с:

 UIFont("ArialMT", 13)

Вместо этого вы можете использовать:

 Font = UIFont.FromName("ArialMT", 13),

Или

 Font = UIFont.SystemFontOfSize(10),

Я тестирую приведенный ниже пример кода, и он работает для меня:

public override void ViewDidLoad()
{
    base.ViewDidLoad();
    // Perform any additional setup after loading the view, typically from a nib.

    NSMutableAttributedString mtText = new NSMutableAttributedString("testTextfield", new UIStringAttributes
    {
        Font = UIFont.SystemFontOfSize(10),
        KerningAdjustment = 8.0f

    });

    UITextField textField = new UITextField();
    textField.Frame = new CoreGraphics.CGRect(10,20,350,50);
    textField.AttributedText = mtText;        

    Add(textField);

}
...