Маска 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]; } 
  • Не удалось создать тестовую версию Swift
  • «NSURLErrorDomain» - код: 18446744073709550594 Ajax call on Xcode 7
  • Присоединить видео в SKPSMTPMessage
  • Тестирование пользовательского интерфейса Xcode 7 с ошибками Cocoapods на устройстве
  • Добавить команду разработчика в Xcode 8?
  • Шрифт «Swanky and Moo Moo» не работает в ios
  • Airplay Mirroring (от iPhone до Mac), как отражение или AirServer
  • Файл FBSDKLoginKit / FBSDKLoginKit.h не найден (Facebook SDK для iOS v4.2 и Xcode 7)
  • Почему я не могу добавить к вашей библиотеке itunes, потому что это ошибка недействительного приложения при попытке установить Ad-Hoc?
  • ld: framework не найден Stripe для архитектуры x86_64
  • Приложение iOS со Static Lib ВСЕГДА падает при запуске Ad Hoc Archive Build. Не удается воспроизвести в Xcode Debugger
  • Interesting Posts

    Утечка памяти из ALAssetRepresentation CGImage в Swift

    Как получить доступ к суперклассическим переменным в методе init

    как управлять 2 версиями одного приложения для разных регионов и языков?

    dyld symbol не найден Словарь-генератор (IOS Xcode6 Beta4)

    Некоторые запросы тайм-аут без ясной причины

    WKWebView, отображающий пустоту на устройстве, работающий на симуляторе

    UIRefreshControl в UICollectionView работает только в том случае, если коллекция заполняет высоту контейнера

    Firebase Swift 3 Xcode 8 – повторить результаты наблюдения

    С помощью AVSpeechSynthesizer вы можете изменить способ произнесения слов или фраз?

    Производительность базовой графики на iOS

    В чем разница между NSNetService и GCDAsynSocket?

    Изображение iOS для iphone 6

    Как установить кнопку для navigationItem titleView?

    Как определить, ждать ли семафор отправки?

    Jenkins Обновление версии приложения xcode для Hockeyapp

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