2015-05-16 3 views
0

Я использую FontAwesomeKit, отличный инструмент для iOS, чтобы получить значки от шрифта awesome. однако список, который нужно вызвать, предопределен.Как получить изображение FontAwesomeKit с использованием имени

Например, я хочу, чтобы получить плоский значок, я должен был бы назвать:

[FAKFontAwesome planeIconWithSize:20]; 

Однако, я хочу, чтобы иметь возможность звонить, используя имя. для звонков с использованием:

[FAKFontAwesome getIconWithName:@"fa-plane"]; 

Как достичь этого?

ответ

0

Объект FAKFontAwesome наследует от FAKIcon, который предоставляет следующий метод: + (instancetype)iconWithCode:(NSString *)code size:(CGFloat)size;.

Это не использует код/​​имя так же, как с CSS lib. Но скорее ожидает, последовательность юникода будет принята в Так «фа-плоскость» это будет:.

[FAKFontAwesome iconWithCode:@"\uf072" size:20.]; 

Имея использовать последовательность Юникода довольно неудобно, я думаю, именно поэтому они создали длинный список методов ,

EDIT:

Просто подумал, что второй путь. Вы можете использовать NSSelectorFromString() для динамического создания вызова метода.

Пример:

SEL theSelector = NSSelectorFromString([NSString stringWithFormat:@"%@IconWithSize:", @"plane"]); 
NSInvocation *anInvocation = [NSInvocation 
      invocationWithMethodSignature: 
      [FAKFontAwesome methodSignatureForSelector:theSelector]]; 

[anInvocation setSelector:theSelector]; 
[anInvocation setTarget:[FAKFontAwesome class]]; 
CGFloat size = 20; 

[anInvocation setArgument:&size atIndex:2]; 


FAKFontAwesome* faIcon = nil; 
[anInvocation invoke]; 

[anInvocation getReturnValue:&faIcon]; 


// Use faIcon here. 
+0

Да, я пробовал, прежде чем я писал здесь, но возникает другая проблема, так как код «\ uf072» извлечь из Plist файла, так или иначе, он не может свободно положить внутрь метод. Я попытался использовать NSLog (@ "\ uf072") => '', он возвращался как символ, но когда я пробовал NSLog (@ "% @", stringFromPlist) => '\ uf072', он возвращался точно так же, как код. следовательно, я не могу просто использовать код, если любая проблема может быть исправлена, я был бы счастлив, но первоначальной проблемой было использование имени вместо этого, поэтому я спросил об этом. Я попробую ваше второе предложение – HelmiB

+0

ваше второе предложение, верни мне крушение. не знаю почему. – HelmiB

0

Я представил вопрос разработчику об этом, и, видимо, кто-то уже сделал это, и решил на предыдущем выпуске (я не видел, что). вот как вы это делаете (проверены).

NSString *iconName = @"globe"; 

NSMutableDictionary *allIcons = [NSMutableDictionary dictionaryWithDictionary:[FAKFontAwesome allIcons]]; 

for (NSString *key in [allIcons allKeys]) { 
    allIcons[allIcons[key]] = key; 
    [allIcons removeObjectForKey:key]; 
} 

NSString *resultCode = [allIcons objectForKey:iconName]; 
FAKFontAwesome *icon = [FAKFontAwesome iconWithCode:resultCode size:TAB_ICON_SIZE]; 

См: https://github.com/PrideChung/FontAwesomeKit/issues/37