gpt4 book ai didi

IOS 应用程序管理的实现

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章IOS 应用程序管理的实现由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

ios 应用程序管理的实现 。

1. 项目名称:应用管理 。

2. 项目截图展示 。

IOS 应用程序管理的实现

3. 项目功能 。

展示应用图标,名称和下载按钮 。

点击下载按钮,出现“正在下载”图标 。

4. 项目代码 。

模型代码:appinfo.h 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#import <foundation/foundation.h>
#import <uikit/uikit.h>
 
@interface appinfo : nsobject
 
@property (nonatomic, copy) nsstring *name;
@property (nonatomic, copy) nsstring *icon;
 
@property (nonatomic, strong, readonly) uiimage *image;
 
/** 使用字典实例化模型 */
- (instancetype)initwithdict:(nsdictionary *)dict;
 
/** 快速实例化一个对象 */
+ (instancetype)appinfowithdict:(nsdictionary *)dict;
 
/** 返回所有plist中的数据模型数组 */
+ (nsarray *)applist;
 
 
@end

模型代码:appinfo.m 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#import "appinfo.h"
 
@implementation appinfo
 
// 合成指令,主动指定属性使用的成员变量名称
@synthesize image = _image;
 
//图片模型
- (uiimage *)image
{
   if (_image == nil) {
     _image = [uiimage imagenamed:self.icon];
   }
   return _image;
}
 
- (instancetype)initwithdict:(nsdictionary *)dict
{
 
   self = [super init];
   if (self) {
     // 用字典给属性赋值
     //    self.name = dict[@"name"]; //将字典的内容赋值给属性
     //    self.icon = dict[@"icon"];
     [self setvaluesforkeyswithdictionary:dict];
   }
   return self;
}
 
+ (instancetype)appinfowithdict:(nsdictionary *)dict
{
   return [[self alloc] initwithdict:dict];
}
 
+ (nsarray *)applist
{
   nsarray *array = [nsarray arraywithcontentsoffile:[[nsbundle mainbundle] pathforresource:@ "app.plist" oftype:nil]];
 
   // 创建一个临时可变数组
   nsmutablearray *arraym = [nsmutablearray array];
 
   // 遍历数组,依次转换模型
   for (nsdictionary *dict in array) {
     [arraym addobject:[appinfo appinfowithdict:dict]];
   }
 
   return arraym;
}
 
@end

模型view:appview.h 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#import <uikit/uikit.h>
 
@ class appinfo;
 
@interface appview : uiview
 
/** 类方法,方便调用视图 */
+ (instancetype)appview;
 
/** 实例化视图,并使用appinfo设置视图的显示 */
+ (instancetype)appviewwithappinfo:(appinfo *)appinfo;
 
// 自定义视图中显示的数据来源是数据模型
// 使用模型设置自定义视图的显示
@property (nonatomic, strong) appinfo *appinfo;
 
@end

模型view:appview.m 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#import "appview.h"
#import "appinfo.h"
 
@interface appview()
 
@property (weak, nonatomic) iboutlet uiimageview *iconview;
@property (weak, nonatomic) iboutlet uilabel *label;
 
@end
 
@implementation appview
 
//实例化xib
+ (instancetype)appview
{
   return [[[nsbundle mainbundle] loadnibnamed:@ "appview" owner:nil options:nil] lastobject];
}
 
//根据模型实例化xib
+ (instancetype)appviewwithappinfo:(appinfo *)appinfo
{
   // 1. 实例化一个视图
   appview *view = [self appview];
 
   // 2. 设置视图的显示
   view.appinfo = appinfo; //包含,appview有appinfo的属性
 
   // 3. 返回视图
   return view;
}
 
/**
  利用setter方法设置视图的界面显示
  */
- ( void )setappinfo:(appinfo *)appinfo
{
   _appinfo = appinfo;
 
   self.label.text = appinfo.name;
   self.iconview.image = appinfo.image;
}
 
/** 按钮监听方法 */
- (ibaction)click:(uibutton *)button
{
   // 添加一个uilabel到界面上
   uilabel *label = [[uilabel alloc] initwithframe:cgrectmake(80, 400, 160, 40)];
   // 数值是0表示黑色,1表示纯白;alpha表示透明度
   label.backgroundcolor = [uicolor colorwithwhite:0.0 alpha:0.2];
 
   label.text = self.appinfo.name;
   label.textalignment = nstextalignmentcenter;
 
   // self.superview就是视图控制器中的self.view
   [self.superview addsubview:label];
 
   // 动画效果
   label.alpha = 0.0;
 
   // 禁用按钮,如果点击了按钮以后就禁用按钮
   button.enabled = no;
 
   // 动画结束之后删除
   [uiview animatewithduration:1.0f animations:^{
     // 要修改的动画属性
     label.alpha = 1.0;
   } completion:^( bool finished) {
     [uiview animatewithduration:1.0 animations:^{
       label.alpha = 0.0;
     } completion:^( bool finished)
       [label removefromsuperview];
     }];
   }];
}
 
@end

viewcontroller.m 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#import "viewcontroller.h"
#import "appinfo.h"
#import "appview.h"
 
#define kappvieww 80
#define kappviewh 90
#define kcolcount 3
#define kstarty  20
 
@interface viewcontroller ()
 
/** 应用程序列表 */
@property (nonatomic, strong) nsarray *applist;
 
@end
 
@implementation viewcontroller
 
 
- (nsarray *)applist
{
   if (_applist == nil) {
     _applist = [appinfo applist];
   }
   return _applist;
}
 
- ( void )viewdidload
{
   [super viewdidload];
 
   // 搭建九宫格
   // 320 - 3 * 80 = 80 / 4 = 20
   cgfloat marginx = (self.view.bounds.size.width - kcolcount * kappvieww) / (kcolcount + 1);
   cgfloat marginy = 10;
 
   for ( int i = 0; i < self.applist.count; i++) {
 
     // 行
     int row = i / kcolcount;
 
     // 列
     int col = i % kcolcount;
 
     cgfloat x = marginx + col * (marginx + kappvieww);
     cgfloat y = kstarty + marginy + row * (marginy + kappviewh);
 
     //加载第i个xib视图
     appview *appview = [appview appviewwithappinfo:self.applist[i]];
 
     // 设置视图位置
     appview.frame = cgrectmake(x, y, kappvieww, kappviewh);
 
     [self.view addsubview:appview];
 
     }
}

5. 本项目必须掌握的代码段 。

字典转模型 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
- (instancetype)initwithdict:(nsdictionary *)dict
{
   self = [super init];
   if (self) {
     [self setvaluesforkeyswithdictionary:dict];
   }
   return self;
}
 
+ (instancetype)appinfowithdict:(nsdictionary *)dict
{
   return [[self alloc] initwithdict:dict];
}
 
+ (nsarray *)applist
{
   nsarray *array = [nsarray arraywithcontentsoffile:[[nsbundle mainbundle] pathforresource:@ "app.plist" oftype:nil]];
 
   // 创建一个临时可变数组
   nsmutablearray *arraym = [nsmutablearray array];
 
   // 遍历数组,依次转换模型
   for (nsdictionary *dict in array) {
 
     [arraym addobject:[appinfo appinfowithdict:dict]];
   }
 
   return arraym;
}

kvc 。

?
1
[self setvaluesforkeyswithdictionary:dict];

6. 笔记 。

字典转模型:

plist文件有多个字典,把字典的元素转换成模型类对象的成员变量,将模型类对象放入数组中 模型的属性名称和plist文件中的key名称必须一致 。

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持! 。

原文链接:http://blog.csdn.net/apple890111/article/details/48861641 。

最后此篇关于IOS 应用程序管理的实现的文章就讲到这里了,如果你想了解更多关于IOS 应用程序管理的实现的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com