0

ITunesU cs193p講座をやっています。SuperCard の例に示すように、次のコードを使用して画像をカードの前面に描画しようとしていますが、何らかの理由で画像が UIView に描画されません。いくつかの助けをいただければ幸いです。

//using an image for the face of the card, i'm going to look it up to see if it exists

if (self.faceUp){
    UIImage *faceImage = [UIImage imageNamed:[NSString stringWithFormat:@"%@%@", [self rankAsString], self.suit]];

    NSLog(@"the faceImage is %@", faceImage);
    if (faceImage) {
    //i'm defining where and how big this is going to be   // the 1.0 - the scale factor, basically means 90% of the card size that i'm going to use
        CGRect imageRect =CGRectInset(self.bounds,
                                  self.bounds.size.width * (1.0-self.faceCardScaleFactor),
                                  self.bounds.size.height * (1.0-self.faceCardScaleFactor));

        [faceImage drawInRect:imageRect];

    } else {
        [self drawPips];
    }

私は次のことを試し、辞書を使用して動作させました:

if (self.faceUp){

    //renamed some png pictures and imported them into the Images.xcassets folder
    NSDictionary *cardImages=@{@"J":@"jack.png",@"Q":@"queen.png",@"K":@"king.png"};
    UIImage *faceImage = [UIImage imageNamed:[NSString stringWithFormat:@"%@", [cardImages        valueForKey:[self rankAsString]]]];
    if (faceImage) {. . . .

しかし、以前のコードが画像を取り込めなかった理由はまだわかりません。たとえば、Image.Xassets に示されているキング オブ ハートの画像の名前は「K♥」です。スタンフォードのサイトからコードをダウンロードしたとき、ビューに画像を描画することもできなかったので、他の人がこの問題を抱えていたのではないかと思っています.

ありがとう。

4

2 に答える 2

0

私も同じ問題を抱えていました。別の記号を選択したか、何らかの文字エンコーディングの問題だったと思います。私の問題を解決したのは、挿入したのと同じシンボルで画像の名前を変更することでした(コピーアンドペースト)。もう 1 つの決定は、イメージ ファイル名から同じ文字を取得し、それをコードで使用することです。

于 2014-04-02T07:06:02.363 に答える
0

同じ問題がありました。これは、画像名のスーツの文字セットが、コードで使用するスーツと異なるためです。すべての画像名をスーツに合わせて名前を変更しましたが、うまくいきました。

+ (NSArray *)validSuits
{
    return @[@"♥",@"♦",@"♠",@"♣"];
}
于 2014-08-06T07:27:26.980 に答える