亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

IOS 應用程序管理的實現

2020-02-19 15:45:17
字體:
來源:轉載
供稿:網友

為了確保每個IOS設備實現管理,我們在不斷的增強IOS設備庫,以下這篇文章是武林技術頻道小編告訴你的IOS 應用程序管理的實現,希望能幫到您。

IOS 應用程序管理的實現

1. 項目名稱:應用管理

2. 項目截圖展示

3. 項目功能

展示應用圖標,名稱和下載按鈕

點擊下載按鈕,出現“正在下載”圖標

4. 項目代碼

模型代碼:AppInfo.h

#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

#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

#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

#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

#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. 本項目必須掌握的代碼段

字典轉模型

- (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

 [self setValuesForKeysWithDictionary:dict];

6. 筆記

字典轉模型:

plist文件有多個字典,把字典的元素轉換成模型類對象的成員變量,將模型類對象放入數組中 模型的屬性名稱和plist文件中的key名稱必須一致

以上就是武林技術頻道分享的關于IOS 應用程序管理的實現,希望這篇文章可以幫助到你,利用空余的時間多學習一些知識,是一個不錯的選擇。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人黄在线观看| 国产在线精品成人一区二区三区| 精品久久久久久| 亚洲最大福利网站| 欧美大片欧美激情性色a∨久久| 伊人一区二区三区久久精品| 国产精品久久久久秋霞鲁丝| 日韩免费av在线| 久久国产精品免费视频| 久久亚洲精品小早川怜子66| 亚洲欧美日韩第一区| 久热在线中文字幕色999舞| 97精品国产97久久久久久春色| 国产69精品久久久久久| 韩日欧美一区二区| 这里只有精品久久| 国产成人a亚洲精品| 日本韩国在线不卡| 中文字幕亚洲无线码在线一区| 国产成+人+综合+亚洲欧美丁香花| 91免费国产视频| 国产亚洲精品久久久久久777| 国产99久久精品一区二区 夜夜躁日日躁| 欧美日韩在线视频一区二区| 国产精品免费网站| 日韩av在线高清| 最近中文字幕mv在线一区二区三区四区| 久久久久久有精品国产| 亚洲欧美成人一区二区在线电影| 懂色aⅴ精品一区二区三区蜜月| 91精品在线国产| 国产精品电影网站| 亚洲日本中文字幕免费在线不卡| 成人免费视频网址| 欧美一区二区三区四区在线| 精品日韩美女的视频高清| 亚洲成色777777女色窝| 亚洲а∨天堂久久精品喷水| 国产偷国产偷亚洲清高网站| 日韩电影免费观看中文字幕| 成人亚洲欧美一区二区三区| 亚洲精品视频二区| 清纯唯美日韩制服另类| 亚洲欧洲一区二区三区久久| 亚洲天堂av在线播放| 久久视频中文字幕| 懂色aⅴ精品一区二区三区蜜月| 亚洲男人天堂古典| 国产成人自拍视频在线观看| 在线观看日韩av| 色综合老司机第九色激情| 国产视频亚洲精品| 国产精品欧美一区二区三区奶水| 亚洲午夜色婷婷在线| 欧美精品在线免费观看| 国产免费一区视频观看免费| 亚洲美女在线观看| 国产日韩欧美黄色| 51精品在线观看| 亚洲色图国产精品| 亚洲人成网在线播放| 国产精品视频专区| 亚洲成人动漫在线播放| 在线亚洲国产精品网| 欧美激情区在线播放| 91久久久久久久一区二区| 欧美在线免费视频| 中文日韩在线观看| 国产成人精品一区| 国产激情999| 久久精品国产综合| 国产欧美最新羞羞视频在线观看| 精品久久中文字幕久久av| 另类天堂视频在线观看| 国产福利视频一区二区| 韩国美女主播一区| 欧美日韩在线视频一区二区| 国产在线精品一区免费香蕉| 亚洲伊人久久大香线蕉av| 国产精品高清在线观看| 97久久久久久| 日韩精品亚洲精品| 精品日韩视频在线观看| 欧美野外猛男的大粗鳮| 97精品在线视频| 国产精品中文字幕在线观看| 欧美另类极品videosbestfree| 国产精品久久久久av免费| 亚洲一区二区中文字幕| 亚洲大胆美女视频| 日韩av综合网站| 欧美多人爱爱视频网站| 精品视频9999| 国产精品久久久久久久久久三级| 亚洲a在线观看| 国产精品电影久久久久电影网| 综合av色偷偷网| 欧美大片免费观看在线观看网站推荐| 亚洲激情 国产| 色婷婷综合成人av| 亚洲天堂第一页| 国产丝袜视频一区| 一区二区福利视频| 51色欧美片视频在线观看| 91在线看www| 在线看福利67194| 26uuu亚洲伊人春色| 亚洲mm色国产网站| 久久精品国产2020观看福利| 欧美疯狂xxxx大交乱88av| 欧美激情亚洲国产| 在线观看欧美视频| 国内久久久精品| 国产欧美精品一区二区三区介绍| 亚洲色图校园春色| 亚洲成人久久久| 正在播放欧美视频| 欧美丝袜一区二区三区| 午夜精品久久久久久99热软件| 亚洲成人精品久久久| 日韩av在线网站| 精品国产乱码久久久久久天美| 亚洲免费高清视频| 亚洲福利影片在线| 亚洲一区二区免费在线| 日韩国产激情在线| 亚洲国产精品成人va在线观看| 欧美日本亚洲视频| 亚洲成色777777在线观看影院| 奇米四色中文综合久久| 成人黄色免费网站在线观看| 国产精品久久不能| 国产91久久婷婷一区二区| 国产亚洲欧美一区| 激情成人在线视频| 欧美极品第一页| 国产视频精品va久久久久久| 最新国产精品拍自在线播放| 日韩小视频在线| 国产99久久精品一区二区| 欧美天堂在线观看| 国产丝袜一区二区三区免费视频| 色妞久久福利网| 久久网福利资源网站| 欧美精品免费看| 久久精品成人一区二区三区| 亚洲欧美在线看| 久久精品免费播放| 91精品国产乱码久久久久久蜜臀| 亚洲伦理中文字幕| 欧美日韩视频免费播放| 高清一区二区三区日本久| 国产成人精品久久久| 中文字幕免费国产精品| 九九精品视频在线观看| 久久久精品一区| 亚洲乱码国产乱码精品精天堂| 久久精品99久久久香蕉| 亚洲成人黄色在线| 在线性视频日韩欧美| 欧美午夜女人视频在线| 久久中文字幕在线视频| 欧美午夜视频在线观看| 久久久免费精品视频|