在 plist 中存储图像路径然后检索以显示在屏幕上
Storing image path in plist then retrieve to show on screen
我正在尝试制作一个应用程序,其中图片与单词的字谜一起出现。我有字谜部分,但无法显示图片。图片保存在名为 "images" 的文件夹中。我想调用 anagramPics - item 0,同时调用 anagrams -item 0 - 将单词与图片匹配
提前致谢。
字谜代码:
level.m
#import "Level.h"
@implementation Level
+(instancetype)levelWithNum:(int)levelNum;
{
// find .plist file for this level
NSString* fileName = [NSString stringWithFormat:@"level%i.plist", levelNum];
NSString* levelPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:fileName];
// load .plist file
NSDictionary* levelDict = [NSDictionary dictionaryWithContentsOfFile:levelPath];
// validation
NSAssert(levelDict, @"level config file not found");
// create Level instance
Level* l = [[Level alloc] init];
// initialize the object from the dictionary
l.pointsPerTile = [levelDict[@"pointsPerTile"] intValue];
l.anagrams = levelDict[@"anagrams"];
l.timeToSolve = [levelDict[@"timeToSolve"] intValue];
return l;
}
@end
level.h
#import <Foundation/Foundation.h>
@interface Level : NSObject
//properties stored in a .plist file
@property (assign, nonatomic) int pointsPerTile;
@property (assign, nonatomic) int timeToSolve;
@property (strong, nonatomic) NSArray* anagrams;
//factory method to load a .plist file and initialize the model
+(instancetype)levelWithNum:(int)levelNum;
@end
gameController.h
-(void)dealRandomAnagram
{
//1
NSAssert(self.level.anagrams, @"no level loaded");
//2 random anagram
int randomIndex = arc4random()%[self.level.anagrams count];
NSArray* anaPair = self.level.anagrams[ randomIndex ];
//3
NSString* anagram1 = anaPair[0];
NSString* anagram2 = anaPair[1];
//4
int ana1len = [anagram1 length];
int ana2len = [anagram2 length];
//5
NSLog(@"phrase1[%i]: %@", ana1len, anagram1);
NSLog(@"phrase2[%i]: %@", ana2len, anagram2);
}
我有类似的情况,我有一些固定的图像要显示。这就是我所做的。
在 Storyboard 上添加了一个 UIImageView。使用约束等将其定位在我想要的位置
为其创建了一个 IBOutlet。将其命名为 myImageView。
我将所有图像添加为资产。在我的例子中,我展示了各种信用卡图片,但原理是一样的。
每个图像资产都是一个文件夹,其中包含一个 Contents.json 文件及其附带的图像文件。您会注意到有三个文件。 iOS 将为视网膜、iPhone 6plus 等使用正确尺寸的图像
Contents.json 看起来像这样:
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x",
"filename" : "card-visa@1x.png"
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "card-visa@2x.png"
},
{
"idiom" : "universal",
"scale" : "3x",
"filename" : "card-visa@3x.png"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
在代码中,通过设置图像 属性 来更改 UIViewImage 的图像。
(这是 Swift 代码。您必须自己将其转换为 Objective-C。)
myImageView.image = UIImage(named:"Card VISA")
我正在尝试制作一个应用程序,其中图片与单词的字谜一起出现。我有字谜部分,但无法显示图片。图片保存在名为 "images" 的文件夹中。我想调用 anagramPics - item 0,同时调用 anagrams -item 0 - 将单词与图片匹配
提前致谢。
字谜代码:
level.m
#import "Level.h"
@implementation Level
+(instancetype)levelWithNum:(int)levelNum;
{
// find .plist file for this level
NSString* fileName = [NSString stringWithFormat:@"level%i.plist", levelNum];
NSString* levelPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:fileName];
// load .plist file
NSDictionary* levelDict = [NSDictionary dictionaryWithContentsOfFile:levelPath];
// validation
NSAssert(levelDict, @"level config file not found");
// create Level instance
Level* l = [[Level alloc] init];
// initialize the object from the dictionary
l.pointsPerTile = [levelDict[@"pointsPerTile"] intValue];
l.anagrams = levelDict[@"anagrams"];
l.timeToSolve = [levelDict[@"timeToSolve"] intValue];
return l;
}
@end
level.h
#import <Foundation/Foundation.h>
@interface Level : NSObject
//properties stored in a .plist file
@property (assign, nonatomic) int pointsPerTile;
@property (assign, nonatomic) int timeToSolve;
@property (strong, nonatomic) NSArray* anagrams;
//factory method to load a .plist file and initialize the model
+(instancetype)levelWithNum:(int)levelNum;
@end
gameController.h
-(void)dealRandomAnagram
{
//1
NSAssert(self.level.anagrams, @"no level loaded");
//2 random anagram
int randomIndex = arc4random()%[self.level.anagrams count];
NSArray* anaPair = self.level.anagrams[ randomIndex ];
//3
NSString* anagram1 = anaPair[0];
NSString* anagram2 = anaPair[1];
//4
int ana1len = [anagram1 length];
int ana2len = [anagram2 length];
//5
NSLog(@"phrase1[%i]: %@", ana1len, anagram1);
NSLog(@"phrase2[%i]: %@", ana2len, anagram2);
}
我有类似的情况,我有一些固定的图像要显示。这就是我所做的。
在 Storyboard 上添加了一个 UIImageView。使用约束等将其定位在我想要的位置
为其创建了一个 IBOutlet。将其命名为 myImageView。
我将所有图像添加为资产。在我的例子中,我展示了各种信用卡图片,但原理是一样的。
每个图像资产都是一个文件夹,其中包含一个 Contents.json 文件及其附带的图像文件。您会注意到有三个文件。 iOS 将为视网膜、iPhone 6plus 等使用正确尺寸的图像
Contents.json 看起来像这样:
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x",
"filename" : "card-visa@1x.png"
},
{
"idiom" : "universal",
"scale" : "2x",
"filename" : "card-visa@2x.png"
},
{
"idiom" : "universal",
"scale" : "3x",
"filename" : "card-visa@3x.png"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
在代码中,通过设置图像 属性 来更改 UIViewImage 的图像。
(这是 Swift 代码。您必须自己将其转换为 Objective-C。)
myImageView.image = UIImage(named:"Card VISA")