1

XCodeのカスタムフォントについてここでさまざまな回答を読みましたが、それでも機能させることができません。

私がしたこと:

Plistに追加しました。バンドルリソースのコピーに追加しました。

私が行った場合:

for ( NSString *familyName in [UIFont familyNames] )
    {
        NSLog(@"Family: %@", familyName);
        NSLog(@"Names = %@", [UIFont fontNamesForFamilyName:familyName]);
    }

それはそれを印刷します:

2013-03-26 17:04:52:214 Appname[21704:2311] Family: Patrick Hand
2013-03-26 17:04:52:217 Appname[21704:2311] Names = (
    "PatrickHand-Regular"
)

そして、私は両方でフォントを設定しようとしました:

self.usernameLabel.font = [UIFont fontWithName:@"PatrickHand-Regular" size:30];

self.usernameLabel.font = [UIFont fontWithName:@"PatrickHand" size:30];

私の最も必死の試みはこれでした:

for ( NSString *familyName in [UIFont familyNames] )
    {
        NSLog(@"Family: %@", familyName);
        NSLog(@"Names = %@", [UIFont fontNamesForFamilyName:familyName]);
        [self.usernameLabel setFont:[[UIFont fontNamesForFamilyName:familyName] objectAtIndex:0]];
        if ( [familyName isEqualToString:@"Patrick Hand" ])
        {
        NSLog(@"BREAK!");
        break;
        }
    }

しかし、それでも変わりません。

何を試すべきか?

4

1 に答える 1

1

インスタンス変数を使用してユーザーインターフェイスで何かを変更するIBOutlet場合は、適切なタイミングでコードを呼び出すようにする必要があります。

たとえば、次のようなクラスがあるとします。

@interface MDViewController : UIViewController

@property (nonatomic, strong) IBOutlet UILabel *usernameLabel;

@end

ビューコントローラのUIを保持するファイルもありMDViewController.nib、ラベルの内容をある値に設定したいとします。

通常、またはinitのようなメソッドは、オブジェクトの存続期間の早い段階で呼び出され、UIのオブジェクトと通信できません。これは、nibファイルがまだ完全にロードされておらず、その時点でのインスタンス変数が引き続きであるためです。initinitWithCoder:IBOutletnil

後で、、、、、などのメソッドで、awakeFromNibviewDidLoad適切に設定され、UIオブジェクトと通信できるようになります。viewWillAppearviewDidAppearIBOutlets

あなたの場合、viewDidLoadまたはviewWillAppearおそらくこの値を設定するための良い点です(これはあなたの特定のニーズに依存します)。

于 2013-03-26T16:46:12.933 に答える