Post

Replies

Boosts

Views

Activity

Reply to Face ID authentication via LAContext may not always result in App lifecycle notifications
ObjC. My situation may be a little different. When the face id authorization pops up, the app enters the inactive state, but after the face id authorization login ends, the app does not return to the active state. The app did not receive the UIApplicationDidBecomeActiveNotification notification, so the blocking view was not removed. The probability of this exception is very low. In addition, I have tried to violently click on the face id authorization login. After repeated calls, the inactive and active life cycles of AppDelegate will not be called, and I will no longer receive UIApplicationDidBecomeActiveNotification and UIApplicationWillResignActiveNotification notifications. The probability of exceptions in this case is relatively high.
Topic: UI Frameworks SubTopic: UIKit Tags:
Jun ’25
Reply to Heic format image incompatibility issue
In the Xcode project, first decode PNG images and then re encode them into heic images, which can be successfully displayed on iPhone 8 plus and iOS 12.1.2; Is it a problem with the Mac conversion tool or other issues? Is there a better conversion compatibility solution for PNG to heic? thank you. The conversion code is as follows: - (void)test3{ NSString *url = [[NSBundle mainBundle] pathForResource:@"1-m" ofType:@"png"]; CGImageRef ref = createCGImageFromFile(url); NSString *path_document = NSHomeDirectory(); NSString *imagePath = [path_document stringByAppendingString:@"/Documents/pic.heic"]; [self generateNewHEIC:[UIImage imageWithCGImage:ref] savePath:imagePath]; dispatch_async(dispatch_get_main_queue(), ^{ UIImage *i = [[UIImage alloc] initWithContentsOfFile:imagePath]; NSLog(@"%@", i); UIImageView *v = [[UIImageView alloc] initWithImage:i]; [self.view addSubview:v]; v.frame = CGRectMake(50, 150, 300, 200); }); CFRelease(ref); } /// create CGImageRef /// - Parameter path: main bundle CGImageRef createCGImageFromFile (NSString* path) { // Get the URL for the pathname passed to the function. NSURL *url = [NSURL fileURLWithPath:path]; CGImageRef myImage = NULL; CGImageSourceRef myImageSource; CFDictionaryRef myOptions = NULL; CFStringRef myKeys[2]; CFTypeRef myValues[2]; // Set up options if you want them. The options here are for // caching the image in a decoded form and for using floating-point // values if the image format supports them. myKeys[0] = kCGImageSourceShouldCache; myValues[0] = (CFTypeRef)kCFBooleanTrue; myKeys[1] = kCGImageSourceShouldAllowFloat; myValues[1] = (CFTypeRef)kCFBooleanTrue; // Create the dictionary myOptions = CFDictionaryCreate(NULL, (const void **) myKeys, (const void **) myValues, 2, &kCFTypeDictionaryKeyCallBacks, & kCFTypeDictionaryValueCallBacks); // Create an image source from the URL. myImageSource = CGImageSourceCreateWithURL((CFURLRef)url, myOptions); CFRelease(myOptions); // Make sure the image source exists before continuing if (myImageSource == NULL){ fprintf(stderr, "Image source is NULL."); return NULL; } // Create an image from the first item in the image source. myImage = CGImageSourceCreateImageAtIndex(myImageSource, 0, NULL); CFRelease(myImageSource); // Make sure the image exists before continuing if (myImage == NULL){ fprintf(stderr, "Image not created from image source."); return NULL; } return myImage; } /// /// - Parameters: /// - image: <#image description#> /// - path: <#path description#> - (void)generateNewHEIC:(UIImage *)image savePath:(NSString *)path{ NSMutableData *imageData = [NSMutableData data]; // HEIC CFStringRef imageUTType = CFSTR("public.heic"); CGImageDestinationRef destination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)imageData, imageUTType, 1, NULL); if (!destination) { return; } CGImageRef imageRef = image.CGImage; CGImagePropertyOrientation exifOrientation = kCGImagePropertyOrientationDown; NSMutableDictionary *frameProperties = [NSMutableDictionary dictionary]; // imageProperties[(__bridge_transfer NSString *) kCGImagePropertyExifDictionary] = @(exifOrientation); CGImageDestinationAddImage(destination, imageRef, (__bridge CFDictionaryRef)frameProperties); if (CGImageDestinationFinalize(destination) == NO) { imageData = nil; } CFRelease(destination); if(imageData) { NSURL *url = [NSURL fileURLWithPath:path]; [imageData writeToURL:url atomically:YES]; } }
Oct ’24
Reply to Heic format image incompatibility issue
I recorded a video, but I found that the video cannot be uploaded. This is my test code: UIImage *i = [UIImage imageNamed:@"temp"]; NSLog(@"%@", i); UIImageView *v = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"temp"]]; [self.view addSubview:v]; v.frame = CGRectMake(50, 150, 300, 200); iPhone 8 plus, iOS 12.1.1 output: 2024-10-21 11:05:36.699573+0800 temp-02[1226:204265] (null) other devices outputs: <UIImage:0x600003014120 named(main: temp) {132.66666666666666, 122} renderingMode=automatic(original)>
Oct ’24