无法让UIImage在cs193p的SuperCard示例中绘制到卡片正面

时间:2014-03-08 13:44:45

标签: uiimage cs193p

我在做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♥”。当我从斯坦福网站下载代码时,我也无法将其绘制到视图中,所以我想知道其他人是否有这个问题。

感谢。

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我想我选择了不同的符号,或者是某种字符编码问题。解决我的问题的方法是用我插入的相同符号重命名图像(复制粘贴)。另一个决定是从图像文件名中获取相同的字符并在代码中使用它。

答案 1 :(得分:0)

我有同样的问题。这是因为图像名称与您在代码中使用的套装具有不同的字符集。我重新命名了所有图像名称并且它起作用了。

+ (NSArray *)validSuits
{
    return @[@"♥",@"♦",@"♠",@"♣"];
}