Nano Hash - криптовалюты, майнинг, программирование

Создание обводки текста для UILabel iphone

Мне было интересно, как создать обводку текста для UILabel в iOS4? Мне нужно предложение. Я хочу что-то вроде этого:

alt text

ИЗМЕНИТЬ:

UIFont *font =  [UIFont fontWithName:@"Arial" size:222];
CGPoint point = CGPointMake(0,0);

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 0.7);
CGContextSetRGBStrokeColor(context, 2, 2, 2, 1.0);
CGContextSetTextDrawingMode(context, kCGTextFillStroke);
CGContextSaveGState(context);

// I change it to my outlet
[label.text drawAtPoint:point withFont:font];

CGContextRestoreGState(context);
12.01.2011

  • Что ж, если вы хотите нарисовать текст в метке с помощью специального шрифта, например CGFontRef, это не совсем просто. Я немного погуглил и нашел для вас решение, которое подразумевает наследование класса UILabel и переписывание для этого метода drawTextInRect. Вся необходимая информация находится здесь. 25.02.2011

Ответы:


1
UIFont *font =  [UIFont fontWithName:@"Arial" size:14];
CGPoint point = CGPointMake(0,0);

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 0.7);
CGContextSetRGBStrokeColor(context, 0.0, 0.0, 0.0, 1.0);
CGContextSetTextDrawingMode(context, kCGTextFillStroke);
CGContextSaveGState(context);
[@"Label" drawAtPoint:point withFont:font];

CGContextRestoreGState(context);

Вы можете посмотреть здесь:

http://developer.apple.com/library/ios/#documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_text/dq_text.html

и в примере кода здесь: http://developer.apple.com/library/ios/#samplecode/QuartzDemo/Introduction/Intro.html%23//apple_ref/doc/uid/DTS40007531

12.01.2011
  • спасибо но ничего не изменилось! ... @Label мой магазин? извините, я новичок в программировании IOS, я поместил свой код на viewDidLoad 12.01.2011
  • @Lable - это просто строка, текст, который вы хотите напечатать 12.01.2011
  • @ Mc.Lover: Это неверно. А значит, почему вы приняли этот ответ ?? 19.01.2011
  • Это прекрасно работает. Однако строка CGContextSaveCGState(context); находится не в том месте. Он должен стоять перед CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 0.7);. В противном случае ко всему остальному тексту также будет применена обводка, поскольку восстанавливается состояние, включающее обводку и цвет заливки. 06.08.2014

  • 2

    У меня есть чистое решение, реализующее подкласс UILabelStroke:

    @implementation UILabelStroked
    @synthesize strokeColor;
    - (void)drawTextInRect:(CGRect)rect {
    
        UIColor *borderColor = self.strokeColor;
        UIColor *fillColor = self.textColor;
        CGContextRef context = UIGraphicsGetCurrentContext();
    
        CGContextSetLineWidth(context, 1.0f);
        CGContextSetTextDrawingMode(context, kCGTextStroke);
        self.textColor = borderColor;
        [super drawTextInRect:rect];
    
        CGContextSetLineWidth(context, 0.0f);
        CGContextSetTextDrawingMode(context, kCGTextFillStroke);
        self.textColor = fillColor;
        [super drawTextInRect:rect];
    }
    @end
    
    19.02.2015
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..