iPhoneアプリケーションユーザーがカスタムフォントを設定してアプリケーションをパーソナライズできるようにしようとしています。 NSUserDefaultsにUIFontオブジェクトを保存できるかどうか疑問に思っています。フォントとフォントサイズを設定してオブジェクトを保存するほうがずっと簡単になります。コードサンプルも素晴らしいでしょう。UIFontオブジェクトをNSUserDefaultsに保存することができます
0
A
答えて
3
私は複雑さを隠すために、カテゴリになるだろう - あなたは
// NSUserDefaults+CustomFontAdditions.h
@interface NSUserDefaults (CustomFontAdditions)
- (UIFont *)ps_fontForKey:(NSString *)fontKey;
- (void)ps_setFont:(UIFont *)font forKey:(NSString *)fontKey;
@end
.M
// NSUserDefaults+CustomFontAdditions.m
#import "NSUserDefaults+CustomFontAdditions.h"
NSString * const PSCustomFontsKey = @"PSCustomFontsKey";
NSString * const PSCustomFontKeyFontName = @"PSCustomFontKeyFontName";
NSString * const PSCustomFontKeyFontSize = @"PSCustomFontKeyFontSize";
@implementation NSUserDefaults (CustomFontAdditions)
- (UIFont *)ps_fontForKey:(NSString *)fontKey;
{
NSDictionary *fonts = [self dictionaryForKey:PSCustomFontsKey];
UIFont *font = nil;
if (fonts) {
NSDictionary *fontComponents = [fonts valueForKey:fontKey];
NSString *fontName = [fontComponents valueForKey:PSCustomFontKeyFontName];
CGFloat size = [[fontComponents valueForKey:PSCustomFontKeyFontSize] floatValue];
font = [UIFont fontWithName:fontName size:size];
}
return font;
}
- (void)ps_setFont:(UIFont *)font forKey:(NSString *)fontKey;
{
NSMutableDictionary *fonts = [[self dictionaryForKey:PSCustomFontsKey] mutableCopy];
if (!fonts) {
fonts = [[NSMutableDictionary alloc] initWithCapacity:1];
}
NSDictionary *fontComponents = [[NSDictionary alloc] initWithObjectsAndKeys:
font.fontName, PSCustomFontKeyFontName,
[NSNumber numberWithFloat:font.pointSize], PSCustomFontKeyFontSize, nil];
[fonts setValue:fontComponents forKey:fontKey];
[self setObject:fonts forKey:PSCustomFontsKey];
}
@end
使い方が
のようになります.Hこのようなもので開始される可能性があります
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
[standardUserDefaults ps_setFont:[UIFont systemFontOfSize:12.0f] forKey:@"font1"];
[standardUserDefaults ps_setFont:[UIFont fontWithName:@"Helvetica Neue" size:24.0f] forKey:@"font2"];
[standardUserDefaults synchronize];
NSLog(@"%@", [standardUserDefaults ps_fontForKey:@"font1"]);
NSLog(@"%@", [standardUserDefaults ps_fontForKey:@"font2"]);
出力:
#=> 2012-04-19 00:01:21.756 ma[1340:f803] <UICFFont: 0x68a18b0> font-family: "Helvetica"; font-weight: normal; font-style: normal; font-size: 12px
#=> 2012-04-19 00:01:21.765 ma[1340:f803] <UICFFont: 0x6b99670> font-family: "Helvetica Neue"; font-weight: normal; font-style: normal; font-size: 24px
2
これらはNSUserDefaultsに保存することができるアイテムです。
たNSData、NSStringの、のNSNumber、NSDate、NSArrayの、またはNSDictionaryの
あなたはこのような何かを行うことができます:
NSDictionary *fontInformation = [NSDictionary dictionaryWithObjectsAndKeys:
@"YOUR_FONTS_NAME", "fontName",
[NSNumber numberWithInt:14], @"fontSize", nil];
[[NSUserDefaults standardUserDefaults] setObject:fontInformation forKey:@"fontInfo"];
その後、NSUserDefaultsからNSDictionaryを取得し、UIFontを再作成することができます。
関連する問題
- 1. iPhone:NSMutableDictionaryをNSUserDefaultsに保存することができません
- 2. NSMutableDictionaryをNSUserDefaultsに保存するとアプリケーションがクラッシュする
- 3. NSMutableArraysをNSUserDefaultsに保存するには
- 4. NSUserDefaultsに保存しようとするとクラッシュします
- 5. NSDictionaryをNSUserDefaultsに保存する
- 6. iOS NSUserDefaultsにUISegmentedControlセレクションを保存する
- 7. NSUserDefaultsにタプルを保存する
- 8. NSMutableArrayをNSUserDefaultsに保存する方法
- 9. NSUserDefaultsにデータを保存する
- 10. NSUserDefaultsは情報をどこに保存しますか?
- 11. DictionaryをNSUserDefaultsに保存すると常にnilが返されます
- 12. NSMutableArrayをNSUserDefaultsに保存できません
- 13. 関数(ポインタ?)をオブジェクトに保存することはできますか?
- 14. NSUserDefaultsがテーブルセルに保存されない
- 15. データがNSUserDefaultsに保存されない
- 16. NSMutableArrayをUIImagesでNSUserDefaultsに保存
- 17. AS3でXMLファイルを保存することができます
- 18. 価格履歴を保存することができます
- 19. ファイルを保存することができません
- 20. 文書NSBundle.hを保存することができません
- 21. wp7のIsolatedStorageSettings.ApplicationSettingsを保存することができません
- 22. NSUserDefaultsは、これは私がNSArrayの保存方法です代わりにNSArray
- 23. Settings.settingsにキータイプを保存することはできますか?
- 24. どのようにNSUserDefaultsに整数を保存しますか?
- 25. NSUserDefaultsがNSStringデータを常に保存しているとは限りません。
- 26. どのようにjsonオブジェクトをjavascriptからphpセッション変数に保存することができますか?
- 27. UISwitchの結果とNSUserDefaultsを保存する
- 28. Objective-C NSUserDefaultsが自分の情報を保存できません
- 29. C#保存----保存と保存の違いを見つけることができません
- 30. NSuserdefaultsに選択されたチェクリストの行を保存します
ポール...私はあなたのソリューションを実装し、それは魅力的に機能します。詳細なコードサンプルを理解してください – 239revilo