feat: remove UIGraphicsBeginImageContextWithOptions from repo (#2117)

Since UIGraphicsBeginImageContextWithOptions will be depracated in iOS 17 (developer.apple.com/documentation/uikit/1623912-uigraphicsbeginimagecontextwitho), I changed the implementation to not use it and use UIGraphicsImageRenderer instead.

Also added Mask examples to be able to test it.
This commit is contained in:
Wojciech Lewicki
2023-08-21 11:35:50 +02:00
committed by GitHub
parent 9176c4c95a
commit f5503e2c9b
13 changed files with 343 additions and 57 deletions
+1 -3
View File
@@ -63,9 +63,7 @@
- (RNSVGNode *)getDefinedMask:(NSString *)maskName;
- (NSString *)getDataURL;
- (NSString *)getDataURLwithBounds:(CGRect)bounds;
- (NSString *)getDataURLWithBounds:(CGRect)bounds;
- (CGRect)getContextBounds;
+11 -20
View File
@@ -321,29 +321,20 @@ using namespace facebook::react;
return nil;
}
- (NSString *)getDataURL
- (NSString *)getDataURLWithBounds:(CGRect)bounds
{
UIGraphicsBeginImageContextWithOptions(_boundingBox.size, NO, 0);
[self clearChildCache];
[self drawRect:_boundingBox];
[self clearChildCache];
[self invalidate];
NSData *imageData = UIImagePNGRepresentation(UIGraphicsGetImageFromCurrentImageContext());
NSString *base64 = [imageData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
UIGraphicsEndImageContext();
return base64;
}
UIGraphicsImageRenderer *renderer = [[UIGraphicsImageRenderer alloc] initWithSize:bounds.size];
- (NSString *)getDataURLwithBounds:(CGRect)bounds
{
UIGraphicsBeginImageContextWithOptions(bounds.size, NO, 1);
[self clearChildCache];
[self drawRect:bounds];
[self clearChildCache];
[self invalidate];
NSData *imageData = UIImagePNGRepresentation(UIGraphicsGetImageFromCurrentImageContext());
UIImage *image = [renderer imageWithActions:^(UIGraphicsImageRendererContext *_Nonnull rendererContext) {
[self clearChildCache];
[self drawRect:bounds];
[self clearChildCache];
[self invalidate];
}];
NSData *imageData = UIImagePNGRepresentation(image);
NSString *base64 = [imageData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
UIGraphicsEndImageContext();
return base64;
}