Прозрачный UILabel textColor на superiew.superview (вроде)

Я хотел бы добиться такого же эффекта, как в новом удаленном обновлении iTunes для iOS 7 для моего UILabel .

Если вы посмотрите на этот экран:

http://313e5987718b346aaf83-f5e825270f29a84f7881423410384342.r78.cf1.rackcdn.com/1383617182-2013-11-05_03.05.58_04.png

(Тот, что справа) вы заметите, что UILabel текста UILabel является фоновой размытой обложкой альбома без черной маски.

На данный момент у меня есть прозрачный UILabel textColor ( http://cl.ly/SInK ), мой код похож на https://github.com/robinsenior/RSMaskedLabel

Мое первое предположение заключается в том, чтобы иметь такую ​​иерархию представлений

 UIImageView (Light blurred image) | UIImageView/UIView (Dark blurred image or just a dark mask for the superview) | UILabel (And all my other view). 

Я хотел бы, чтобы UILabel имел прозрачный цвет текста на первом UIImageView, игнорируя второй / Mask).

Я не могу обернуть голову вокруг решения, чтобы добиться этого эффекта.

Поскольку iOS 8 Apple предлагает новый класс UIVibranceEffect, который можно добавить в UIVisualEffectView. Это в сочетании с UIBlurEffect может достичь того же результата, что и мой скриншот выше.

Источник: https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIVibrancyEffect/index.html

Я не думаю, что вы сможете напрямую сделать это с помощью UILabel. Я сделал разложение на несколько частей:

Как рисовать только фон метки. Для этого я вырезал код из CGPathRef из строки, чтобы превратить строку в путь. Тогда подклассификация UILabel и добавление следующего drawRect сделали соответствующую вещь.

 -(void)drawRect:(CGRect)rect { CGContextRef ctx = UIGraphicsGetCurrentContext(); CGContextSaveGState(ctx); // Convert the attributed text to a UIBezierPath CGPathRef path = [self.attributedText createPath]; // Adjust the path bounds horizontally as requested by the view CGRect bounds = [self textRectForBounds:rect limitedToNumberOfLines:self.numberOfLines]; CGAffineTransform xform = CGAffineTransformMakeTranslation(bounds.origin.x, bounds.origin.y); // Adjust the path bounds vertically because it doesn't seem to be taken into account yet bounds = CGPathGetBoundingBox(path); xform = CGAffineTransformTranslate(xform, 0., (self.bounds.size.height - bounds.size.height) / 2.); // Apply the transform to the path path = CGPathCreateCopyByTransformingPath(path, &xform); // Set colors, the fill color should be the background color because we're going // to draw everything BUT the text, the text will be left clear. CGContextSetFillColorWithColor(ctx, self.textColor.CGColor); // Flip and offset things CGContextScaleCTM(ctx, 1., -1.); CGContextTranslateCTM(ctx, 0., 0. - self.bounds.size.height); // Invert the path CGContextAddRect(ctx, self.bounds); CGContextAddPath(ctx, path); CGContextDrawPath(ctx, kCGPathEOFill); // Discard the path CFRelease(path); // Restore gstate CGContextRestoreGState(ctx); } 

Если вы создаете UILabel в построителе интерфейсов, задайте класс, установите цвет фона для очистки и цвет переднего плана на предлагаемый цвет заливки, фон покажет, где находится текст.

Чтобы размыть тело, отображаемое через ярлык, я упал с помощью FXBlurView ( https://github.com/nicklockwood/FXBlurView ) под меткой с ограничениями размера, чтобы их совместить.

Вы можете видеть, что все это работает здесь https://github.com/dwb357/TransparentLabel .

Цвет неравномерен. Но на самом деле это «вырезано», чтобы просветлить размытый и тонированный фон.

Один из способов сделать это – построить CGPath для глифов, кликнуть графический контекст к ним, затем очистить контекст, оставив область вне черной и область внутри fhe glyths полупрозрачной.

Альтернативный подход – создать цвет шаблона из этого большого размытого тонированного обложки и использовать этот цвет шаблона на UILabel.

  • Как получить отрегулированный размер шрифта от UILabel при настройкеFontSizeToFitWidth - ДА в iOS 7?
  • UILabel Pinch-to-zoom
  • установить границу метки в iphone
  • У UILabel есть странная серая верхняя строка / граница в iOS7, как я могу ее удалить?
  • Быстрое изменение размера текста кнопки 5
  • Настройка текста UILabel на жирный шрифт
  • UILabel с текстом двух разных цветов
  • Как добавить интерактивные UILabels поверх UIImageView?
  • Текстовая надпись Word Wrapping
  • Получить высоту NSString
  • Можно ли получить список атрибутов и диапазонов для NSMutableAttributedString?
  • Interesting Posts

    Использование UIImageView с в UITableView вызывает отставание

    Сообщения Pushkit push, не работающие с Urban Airship

    Objective C, приложение сбой при изменении контроллера корневого представления. Сироте без делегата (ошибка!)

    ERROR ITMS-90596: «Недействительный пакет». Каталог активов в разделе «Полезная нагрузка / Лимон chilli.app/Assets.car» не может быть прочитан

    Как измерить объем памяти SDK в приложении iOS

    Обновить ссылку ManagedObjectContext

    С помощью нескольких UITableViews в одном представлении UIScrollview, как загружать только данные ячеек для видимых ячеек

    Как я могу обнаружить полное тело, например, руку, ногу?

    Попытка дать UILabel тень, но она не появится

    Как ведут себя геосферы, когда перекрываются CLRegions

    Изменение рамки программно с автоматическим расположением

    Добавление слайда влево-вправо анимация (переход) в addSubView

    Ошибка WatchKit – не удается найти класс контроллера интерфейса '' для создания экземпляра

    iCarousel – Как перенести фокус на левую сторону

    iOS 8 Safari и jQuery-minicolor: не удается разобрать ответ

    Давайте будем гением компьютера.