Маска UIImage iOS 8

Я использую для маскирования uiimages в iOS 7, используя следующий код, который отлично работает. Но теперь, в iOS 8, он ничего не делает, вместо того, чтобы вернуть мне исходное изображение + маску, он возвращает мне черное изображение.

- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage { CGImageRef imgRef = [image CGImage]; CGImageRef maskRef = [maskImage CGImage]; CGImageRef actualMask = CGImageMaskCreate(CGImageGetWidth(maskRef), CGImageGetHeight(maskRef), CGImageGetBitsPerComponent(maskRef), CGImageGetBitsPerPixel(maskRef), CGImageGetBytesPerRow(maskRef), CGImageGetDataProvider(maskRef), NULL, false); CGImageRef masked = CGImageCreateWithMask(imgRef, actualMask); return [UIImage imageWithCGImage:masked]; 

}

Вот как работает мое приложение: – оригинальное изображение будет размытым – тогда применяется маска (круг, квадрат, любая форма, которая является .png изображением) – возвращает размытое изображение, а маска должна обрезать размытое изображение и видеть позади оригинальное изображение без размытия. он работает на iOS 7, но в iOS 8 код о маскировке (выше) не работает. есть идеи?

One Solution collect form web for “Маска UIImage iOS 8”

Используйте этот метод для маскировки изображения в iOS 8.0. Я также использовал этот метод в моем рабочем коде и отлично работал.

 - (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage { CGImageRef imgRef = [image CGImage]; CGImageRef maskRef = [maskImage CGImage]; int maskWidth = CGImageGetWidth(maskRef); int maskHeight = CGImageGetHeight(maskRef); // round bytesPerRow to the nearest 16 bytes, for performance's sake int bytesPerRow = (maskWidth + 15) & 0xfffffff0; int bufferSize = bytesPerRow * maskHeight; // allocate memory for the bits CFMutableDataRef dataBuffer = CFDataCreateMutable(kCFAllocatorDefault, 0); CFDataSetLength(dataBuffer, bufferSize); // the data will be 8 bits per pixel, no alpha CGColorSpaceRef colourSpace = CGColorSpaceCreateDeviceGray(); CGContextRef ctx = CGBitmapContextCreate(CFDataGetMutableBytePtr(dataBuffer), maskWidth, maskHeight, 8, bytesPerRow, colourSpace, kCGImageAlphaNone); // drawing into this context will draw into the dataBuffer. CGContextDrawImage(ctx, CGRectMake(0, 0, maskWidth, maskHeight), maskRef); CGContextRelease(ctx); // now make a mask from the data. CGDataProviderRef dataProvider = CGDataProviderCreateWithCFData(dataBuffer); CGImageRef mask = CGImageMaskCreate(maskWidth, maskHeight, 8, 8, bytesPerRow, dataProvider, NULL, FALSE); CGDataProviderRelease(dataProvider); CGColorSpaceRelease(colourSpace); CFRelease(dataBuffer); CGImageRef masked = CGImageCreateWithMask(imgRef, mask); return [UIImage imageWithCGImage:masked]; } 
  • Как назвать кнопку возврата в UISplitViewController
  • Удаление свойств PREBINDING & GCC_ENABLE_FIX_AND_CONTINUE
  • Безопасность транспортной безопасности приложений (ATS) и приложение
  • Как скопировать старую версию SDK iOS в новую версию Xcode?
  • locationManager устарел в Swift 3?
  • UISearchDisplayController и пользовательская ячейка
  • UITableView Checkmark ТОЛЬКО ОДИН Ряд за раз
  • Как оживить увеличивающееся число в UILabel
  • Xcode 4 продолжает сбой
  • пользовательский текст при записи красной строки состояния
  • как обращаться, если пользователь отменил покупку InApp или просто другое несостоявшееся состояние
  • Interesting Posts

    Использование NSURLCache для предварительной загрузки локальных ресурсов для UIWebView

    Настройка UISearchController iOS 11

    API Google Directions не возвращает результаты в iOS

    AudioServicesPlaySystemSound отключен на симуляторе xCode 6 GM

    возможно ли отображать частицы за полупрозрачными объектами в наборе сюжетов?

    Как сохранить потоковые видеоданные от MPMoviePlayerController

    Курсор UISearchController UISearchBar показывает первое использование, а не последующее

    Исправление «Установка приложения Apple Watch никогда не завершалась»

    Почему SKStoreReviewController не позволяет мне представить обзор?

    Как установить iOS 4.3 Simulator на Xcode 4.5?

    NSNumberFormatter возвращает nil на устройстве, а не на симуляторе

    IOS 8: пользовательская клавиатура с кнопкой отмены и повтора

    Xcode 4.4, приложение для сборки с ARC для iOS 4.2

    iOS с Google Maps

    iOS 8 Чтение журналов консоли с пользовательских устройств без установки Xcode

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