2011-06-28 65 views
0

我有一個使用pdf文件的應用程序。我在文件Info.plist中添加了這個:如何在運行時獲取CFBundleTypeIconFiles信息?

<key>CFBundleDocumentTypes</key> 
<array> 
    <dict> 
     <key>CFBundleTypeIconFiles</key> 
     <array> 
      <string>iconPDF</string> 
     </array> 
     <key>CFBundleTypeName</key> 
     <string>PDF</string> 
     <key>CFBundleTypeRole</key> 
     <string>Viewer</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>com.adobe.pdf</string> 
     </array> 
    </dict> 
</array> 

在我的應用我有一個UITableViewController,並在(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath,我想設置cell.imageView.imageCFBundleTypeIconFiles的圖標,但我不知道如何得到這個圖標。
我試着用docInteractionController.icons,但在這個數組中我只找到默認圖標。

回答

0

查覈在HockeyKit,在那裏我做了代碼正是這一點: https://github.com/TheRealKerni/HockeyKit/blob/develop/client/iOS/BWHockeyViewController.m

始於336線:

NSString *iconString = nil; 
    NSArray *icons = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIconFiles"]; 
    if (!icons) { 
     iconString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIconFile"]; 
     if (!iconString) { 
      iconString = @"Icon.png"; 
     } 
    } else { 
     BOOL useHighResIcon = NO; 
     IF_IOS4_OR_GREATER(if ([UIScreen mainScreen].scale == 2.0f) useHighResIcon = YES;) 

     for(NSString *icon in icons) { 
      iconString = icon; 
      UIImage *iconImage = [UIImage imageNamed:icon]; 

      if (iconImage.size.height == 57 && !useHighResIcon) { 
       // found! 
       break; 
      } 
      if (iconImage.size.height == 114 && useHighResIcon) { 
       // found! 
       break; 
      } 
     } 
    } 
+0

謝謝你的答案!但是,如果我有多個文檔類型,例如,如何區分pdf文檔的CFBundleIconFile和jpg文檔的CFBundleIconFile。 – Giorgio

+0

更多文檔類型?每個應用只能有一個Info.plist。 – steipete

相關問題