Противоположные диагональные края CALayer

Когда я устанавливаю свойство transform моего CALayer с помощью CATransform3DRotate, слой правильно поворачивается. Однако края слоя зазубрены и не сглажены. Я прочитал пару сообщений по теме:

iPhone: CALayer + вращаются в 3D + антиалиасы?

iPhone – Jagged Edges при применении перспективы к CALayer

Я попытался включить их советы, установив следующие свойства на моем диагональном слое

CALayer* layer = myView.layer; layer.shadowOpacity = 0.01; layer.edgeAntialiasingMask = kCALayerTopEdge | kCALayerBottomEdge | kCALayerRightEdge | kCALayerLeftEdge; layer.borderWidth = 1.0; layer.borderColor = [UIColor clearColor].CGColor; layer.backgroundColor = [UIColor greenColor].CGColor; 

Я также переопределил drawLayer: inContext: метод моего диагонального слоя для обеспечения сглаживания:

 -(void)drawLayer:(CALayer*)layer inContext:(CGContextRef)context { CGContextSetAllowsAntialiasing(context, true); CGContextSetShouldAntialias(context, true); CGContextSetFillColorWithColor(context, [UIColor greenColor].CGColor); CGContextFillRect(context, self.bounds); } 

Что мне не хватает?

2 Solutions collect form web for “Противоположные диагональные края CALayer”

Я только что написал об этом для изображений. Может быть, это поможет.

Я нашел несколько трюков, которые помогают и устанавливают только границу, не делали то, что я думал. Что вы можете сделать, это установить несколько настроек, которые помогут с интерполяцией, растеризацией и растеризацией.

Посмотрите, помогает ли что-то из этого кода:

  UIImage * img =[UIImage imageWithData:[NSData dataWithContentsOfFile:[[[NSBundle mainBundle ] resourcePath ] stringByAppendingPathComponent:@"AliasImage.png" ] ] ]; CGRect imageRect = CGRectMake( 0 , 0 , img.size.width + 4 , img.size.height + 4 ); UIGraphicsBeginImageContext( imageRect.size ); [img drawInRect:CGRectMake( imageRect.origin.x + 2 , imageRect.origin.y + 2 , imageRect.size.width - 4 , imageRect.size.height - 4 ) ]; CGContextSetInterpolationQuality( UIGraphicsGetCurrentContext() , kCGInterpolationHigh ); img = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); [aliasImage setImage:img ]; aliasImage.transform = CGAffineTransformScale(aliasImage.transform , 0.45 , 0.45 ); aliasImage.layer.shouldRasterize = YES; aliasImage.layer.rasterizationScale = 0.45; aliasImage.layer.edgeAntialiasingMask = kCALayerLeftEdge | kCALayerRightEdge | kCALayerBottomEdge | kCALayerTopEdge; aliasImage.clipsToBounds = NO; aliasImage.layer.masksToBounds = NO; 

У меня есть несколько примеров, размещенных здесь

Начиная с iOS7, это теперь, наконец, возможно на основе каждого слоя и без каких-либо уродливых взломов, таких как прозрачные пиксели или обходные пути, такие как растеризация:

layer.allowsEdgeAntialiasing = YES;

Интересно, что это не распространяется на официальную документацию CALayer, но, безусловно, является публичным API. Ознакомьтесь с отличиями API iOS7 и замечательной записью Питера Стейнбергера « Скрытые драгоценные камни и обходные пути» в iOS7 .

  • Open Url, использующий метод POST в Safari, используя метод sharedApplication openURL
  • Как центрировать UIActivityIndicator?
  • Как изменить приоритет NSURLConnection?
  • Как создать кнопку для изменения вида камеры в Swift?
  • iPhone, для которого случаи не могут получить успех в Mac-адресе?
  • Эквивалент iOS NSNotificationCenter в Android?
  • Установка «edgeForExtendedLayout = UIRectEdgeNone» не препятствует перемещению моего подвью в iOS 7
  • iOS Facebook SDK 3.1 добавить разрешение при входе в систему
  • Grand Central Dispatch (GCD) против performSelector - требуется лучшее объяснение
  • Поиск инструмента для создания сложного UIBezierPath
  • Новая инструментальная цепочка kivy-Ios, сбой приложения, когда портретная ориентация отключена
  • Interesting Posts

    iCloud ubiquityIdentityToken эквивалент в iOS5

    Добавление раскадровки в существующий проект

    сделать UItextfield таким, как UISearchBar

    iOS: Objective-C MD5 NSString

    Конфликт UITapGestureRecognizer в UIView и UITableView

    Как запоминать выбранные строки и поддерживать их после перезагрузки по умолчанию в UITableView?

    UITextView не обнаруживает ссылки

    Автоматическая компоновка iOS неправильно отображает взгляды по очереди

    UINavigationController в UITabBarController, установив заголовок контроллера навигации

    Facebook iOS SDK 3.2.1 – : непризнанный селектор, отправленный в экземпляр

    Зеркало для экрана iPad / iPhone

    Как определить, когда заголовок UITableView прокручивается из видимой области?

    Для iOS, Safari, VoiceOver, как мне заставить VoiceOver читать что-то, кроме текстового контента?

    Обнаруживать, работает ли приложение в режиме «Слайд-режим» или «Сплит-просмотр» в iOS 9

    Действительно ли 64-разрядный симулятор iOS 64-бит?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.