mirror of
https://github.com/TelegramMessenger/Telegram-iOS.git
synced 2026-07-06 03:33:41 +02:00
Fix
This commit is contained in:
parent
dff6e560d2
commit
9fce079880
2 changed files with 30 additions and 25 deletions
|
|
@ -196,33 +196,38 @@ static void replacement_backdropLayerDidChangeLuma(UIView *self, SEL selector, C
|
|||
original_backdropLayerDidChangeLuma(self, selector, layer, luma);
|
||||
}
|
||||
|
||||
static NSString *TGEncodeText(NSString *string, int key) {
|
||||
NSMutableString *result = [[NSMutableString alloc] init];
|
||||
|
||||
for (int i = 0; i < (int)[string length]; i++) {
|
||||
unichar c = [string characterAtIndex:i];
|
||||
c += key;
|
||||
[result appendString:[NSString stringWithCharacters:&c length:1]];
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static void registerEffectViewOverrides(void) {
|
||||
int classCount = objc_getClassList(NULL, 0);
|
||||
if (classCount > 0) {
|
||||
__unsafe_unretained Class *classList = (Class *)malloc(classCount * sizeof(Class));
|
||||
objc_getClassList(classList, classCount);
|
||||
|
||||
NSString *searchString = [@"UISD" stringByAppendingString:@"FBackdropView"];
|
||||
NSString *selectorString = [@"backdropLayer" stringByAppendingString:@":didChangeLuma:"];
|
||||
|
||||
for (int i = 0; i < classCount; i++)
|
||||
{
|
||||
const char *className = class_getName(classList[i]);
|
||||
NSString *name = [[NSString alloc] initWithCString:className encoding:NSASCIIStringEncoding];
|
||||
if ([name hasSuffix:searchString]) {
|
||||
Method method = (Method)[RuntimeUtils getMethodOfClass:classList[i] selector:NSSelectorFromString(selectorString)];
|
||||
if (method) {
|
||||
const char *typeEncoding = method_getTypeEncoding(method);
|
||||
if (strcmp(typeEncoding, "v32@0:8@16d24") == 0) {
|
||||
original_backdropLayerDidChangeLuma = (id (*)(id, SEL, CALayer *, double))method_getImplementation(method);
|
||||
[RuntimeUtils replaceMethodImplementationOfClass:classList[i] selector:NSSelectorFromString(selectorString) replacement:(IMP)&replacement_backdropLayerDidChangeLuma];
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
NSMutableArray<NSString *> *nameList = [[NSMutableArray alloc] init];
|
||||
[nameList addObject:TGEncodeText(@"_TtC5UIKitP33_ACD4A08F4BE9D00246F2A9C24A80CA8817UISDFBackdropView", 0)];
|
||||
NSString *selectorString = [@"backdropLayer" stringByAppendingString:@":didChangeLuma:"];
|
||||
|
||||
for (NSString *name in nameList) {
|
||||
Class classValue = NSClassFromString(name);
|
||||
if (classValue == nil) {
|
||||
continue;
|
||||
}
|
||||
|
||||
free(classList);
|
||||
Method method = (Method)[RuntimeUtils getMethodOfClass:classValue selector:NSSelectorFromString(selectorString)];
|
||||
if (method) {
|
||||
const char *typeEncoding = method_getTypeEncoding(method);
|
||||
if (strcmp(typeEncoding, "v32@0:8@16d24") == 0) {
|
||||
original_backdropLayerDidChangeLuma = (id (*)(id, SEL, CALayer *, double))method_getImplementation(method);
|
||||
[RuntimeUtils replaceMethodImplementationOfClass:classValue selector:NSSelectorFromString(selectorString) replacement:(IMP)&replacement_backdropLayerDidChangeLuma];
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue