-1

何らかの理由で、plist から値を取得できず、なぜ plist なのかわかりません:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CachedColors</key>
    <dict>
        <key>com.Halfbrick.Fruit</key>
        <string>0.00000,0.00000,0.00000</string>
        <key>com.amazon.Amazon</key>
        <string>0.00000,0.00000,0.00000</string>
        <key>com.apple.AdSheetPhone</key>
        <string>0.00000,0.00000,0.00000</string>
        <key>com.apple.AppStore</key>
        <string>0.28824,0.37059,0.48235</string>
    <key>default</key>
    <true/>
    <key>gradient</key>
    <false/>
    <key>opaque</key>
    <true/>
    <key>showedMessage</key>
    <true/>
    <key>translucent</key>
    <true/>
</dict>
</plist>

私の方法は次のとおりです。

SBApplication *frontApp = [(SpringBoard*)[UIApplication sharedApplication] _accessibilityFrontMostApplication];
NSString *frontAppBundleID = [frontApp displayIdentifier];
NSDictionary *statusBarCachedColors = [NSDictionary dictionaryWithContentsOfFile:@"/var/mobile/Library/Preferences/cc.tweak.statuscolor.plist"];
NSString *colorString = (NSString*)[statusBarCachedColors objectForKey:frontAppBundleID];
NSArray *components = [colorString componentsSeparatedByString:@","];
UIColor *tintColor = [UIColor colorWithRed:[[components objectAtIndex:0] floatValue] green:[[components objectAtIndex:1] floatValue] blue:[[components objectAtIndex:2] floatValue] alpha:1];

私のメソッドは、現在のアプリケーションの表示 ID を取得し、plist からアプリの値を取得し、値の文字列を分割して、配列から UIColor を作成します。AppStoreを開いた場合、plistを検索して「0.28824、0.37059、0.48235」を返し、それを色にしますが、何も返されないようです。displayIdentifierをテストしましたが、正しいです正しいアプリ表示 ID を表示します。値が取得されない理由がわかりません

4

3 に答える 3

1

アイテムCachedColorsを見逃しています。

NSString *colorString = (NSString*)[[statusBarCachedColors objectForKey:@"CachedColors"] objectForKey:frontAppBundleID];
于 2013-01-04T12:36:23.383 に答える
0
NSString *path = [[NSBundle mainBundle] pathForResource:
                      @"<plist file name>" ofType:@"plist"];

NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];

これがうまくいくことを願って試してみてください。

于 2013-01-04T10:12:07.573 に答える
0

この次のコードを使用してください。うまくいくかもしれません..

次のようにplistから値を取得します...

NSString *path = [[NSBundle mainBundle] pathForResource:@"PlistFileName" ofType:@"plist"];
NSMutableArray  *arrPList = [NSMutableArray arrayWithContentsOfFile:path];

コードを使用した後、次のロジックを試してください。

float clrRed = [[components objectAtIndex:0] floatValue];
float clrGreen = [[components objectAtIndex:1] floatValue];
float clrBlue = [[components objectAtIndex:2] floatValue];

UIColor *tintColor = [UIColor colorWithRed:clrRed green:clrGreen blue:clrBlue floatValue] alpha:1];
于 2013-01-04T10:09:10.067 に答える