我在做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♥”。当我从斯坦福网站下载代码时,我也无法将其绘制到视图中,所以我想知道其他人是否有这个问题。
感谢。
答案 0 :(得分:0)
我遇到了同样的问题。我想我选择了不同的符号,或者是某种字符编码问题。解决我的问题的方法是用我插入的相同符号重命名图像(复制粘贴)。另一个决定是从图像文件名中获取相同的字符并在代码中使用它。
答案 1 :(得分:0)
我有同样的问题。这是因为图像名称与您在代码中使用的套装具有不同的字符集。我重新命名了所有图像名称并且它起作用了。
+ (NSArray *)validSuits
{
return @[@"♥",@"♦",@"♠",@"♣"];
}