• 用mvc的应用管理代码


    控制器:LWTViewController.m

     1 //
     2 //  LWTViewController.m
     3 //  应用管理--九宫格
     4 //
     5 //  Created by apple on 14-5-22.
     6 //  Copyright (c) 2014年 lwt. All rights reserved.
     7 //
     8 
     9 #import "LWTViewController.h"
    10 #import "LWTAppInfoList.h"
    11 #import "LWTAppInfoView.h"
    12 
    13 @interface LWTViewController ()
    14 
    15 // 保存plist文件内容
    16 @property (nonatomic, strong) NSArray *appInfoList;
    17 
    18 @end
    19 
    20 @implementation LWTViewController
    21 
    22 #pragma mark - 优化模型 未完成
    23 - (NSArray *)appInfoList
    24 {
    25     if (!_appInfoList) {
    26         // 用模型获取plist文件内容
    27         _appInfoList = [LWTAppInfoList appInfoList];
    28     }
    29     return _appInfoList;
    30     
    31 }
    32 
    33 - (void)viewDidLoad
    34 {
    35     [super viewDidLoad];
    36     // Do any additional setup after loading the view, typically from a nib.
    37     
    38     // 每行3列
    39     int totalcols = 3;
    40     // 起始高度
    41     CGFloat viewStart = 20;
    42     // 高度间隔
    43     CGFloat viewH = 10;
    44     
    45     for (int i = 0; i < self.appInfoList.count; i++) {
    46         // 行数
    47         int row = i / totalcols;
    48         // 列数
    49         int col = i % totalcols;
    50         
    51         // 该条目的title和图片名称
    52         LWTAppInfoList *dict = self.appInfoList[i];
    53         // 从视图获取小view信息
    54         UIView *view = [LWTAppInfoView appInfoViewWithAppInfoList:dict];
    55         
    56         // 小view的宽高
    57         CGFloat viewWidth = view.bounds.size.width;
    58         CGFloat viewHeight = view.bounds.size.height;
    59         
    60         // 两个view的宽度间隔
    61         CGFloat viewM = (self.view.bounds.size.width - (viewWidth * totalcols)) / (totalcols + 1);
    62         
    63         // 每个view的x
    64         int viewX = viewM + ((viewWidth + viewM)* col);
    65         // 每个view的y
    66         int viewY = viewStart + viewH + (viewH + viewHeight) * row;
    67         
    68         
    69         view.frame = CGRectMake(viewX, viewY, viewWidth, viewHeight);
    70         [self.view addSubview:view];
    71     }
    72 }
    73 
    74 @end

    模型 .h:LWTAppInfoList.h

     1 //
     2 //  LWTAppInfoList.h
     3 //  应用管理--九宫格
     4 //
     5 //  Created by apple on 14-5-22.
     6 //  Copyright (c) 2014年 lwt. All rights reserved.
     7 //
     8 
     9 #import <Foundation/Foundation.h>
    10 
    11 @interface LWTAppInfoList : NSObject
    12 // plist属性
    13 @property (nonatomic, copy) NSString *name;
    14 @property (nonatomic, copy) NSString *icon;
    15 // 创建图片,控制器直接调用图片
    16 @property (nonatomic, weak, readonly) UIImage *image;
    17 
    18 // init重构
    19 - (instancetype)initWithNSDictionary : (NSDictionary *)dict;
    20 // 工厂方法
    21 + (instancetype) appInfoListWithDictionary : (NSDictionary *)dict;
    22 // 封装plist方法,使控制器直接调用就可获取plist内容
    23 + (NSArray *)appInfoList;
    24 
    25 @end

    模型.m:LWTAppInfoList.m

    //
    //  LWTAppInfoList.m
    //  应用管理--九宫格
    //
    //  Created by apple on 14-5-22.
    //  Copyright (c) 2014年 lwt. All rights reserved.
    //
    
    #import "LWTAppInfoList.h"
    
    #pragma mark 定义私有属性
    @interface LWTAppInfoList ()
    {
        UIImage *_image;
    }
    
    @end
    
    @implementation LWTAppInfoList
    
    - (UIImage *)image
    {
        _image = [UIImage imageNamed:_icon];
        return _image;
    }
    
    - (instancetype)initWithNSDictionary:(NSDictionary *)dict
    {
        if (self = [super init]) {
            _name = dict[@"name"];
            _icon = dict[@"icon"];
        }
        
        return self;
    }
    
    + (instancetype)appInfoListWithDictionary:(NSDictionary *)dict
    {
        return [[self alloc] initWithNSDictionary:dict];
    }
    
    + (NSArray *)appInfoList
    {
        // 根据Plist文件获取内容
        NSBundle *bundle = [NSBundle mainBundle];
        NSString *path = [bundle pathForResource:@"app.plist" ofType:nil];
        // 获取plist内容
        NSArray *array = [NSArray arrayWithContentsOfFile:path];
        // 创建临时数组
        NSMutableArray *arrayM = [NSMutableArray array];
        for ( NSDictionary *dict in array)
        {
            // 创建LWTAppInfoList对象
            // 将对象赋给数组
            [arrayM addObject:[self appInfoListWithDictionary:dict]];
        }
        // 返回数组
        return arrayM;
    }
    
    @end

    视图 .h:LWTAppInfoView.h

     1 //
     2 //  LWTAppInfoView.h
     3 //  应用管理--九宫格
     4 //
     5 //  Created by apple on 14-5-23.
     6 //  Copyright (c) 2014年 lwt. All rights reserved.
     7 //
     8 
     9 #import <UIKit/UIKit.h>
    10 @class LWTAppInfoList;
    11 
    12 @interface LWTAppInfoView : UIView
    13 
    14 + (instancetype) appInfoViewWithAppInfoList : (LWTAppInfoList *)appInfo;
    15 
    16 
    17 @end

    视图 .m:LWTAppInfoView.m

     1 //
     2 //  LWTAppInfoView.m
     3 //  应用管理--九宫格
     4 //
     5 //  Created by apple on 14-5-23.
     6 //  Copyright (c) 2014年 lwt. All rights reserved.
     7 //
     8 
     9 #import "LWTAppInfoView.h"
    10 #import "LWTAppInfoList.h"
    11 
    12 @interface LWTAppInfoView ()
    13 
    14 @property (weak, nonatomic) IBOutlet UIImageView *imageView;
    15 
    16 @property (weak, nonatomic) IBOutlet UILabel *label;
    17 
    18 @property (nonatomic, strong) LWTAppInfoList *appInfo;
    19 
    20 @property (weak, nonatomic) IBOutlet UIButton *downloadButton;
    21 
    22 
    23 @end
    24 
    25 @implementation LWTAppInfoView
    26 
    27 + (instancetype)appInfoView
    28 {
    29     // 读取xib文件中的view数组
    30     NSArray *arrayViews = [[NSBundle mainBundle] loadNibNamed:@"appInfoView" owner:nil options:nil];
    31     // xib中的第一个数组就是所需数组
    32     return [arrayViews firstObject];
    33 }
    34 
    35 
    36 + (instancetype)appInfoViewWithAppInfoList:(LWTAppInfoList *)appInfo
    37 {
    38     LWTAppInfoView *view = [self appInfoView];
    39     view.appInfo = appInfo;
    40     
    41     return view;
    42 }
    43 
    44 - (void)setAppInfo:(LWTAppInfoList *)appInfo
    45 {
    46     _appInfo = appInfo;
    47     self.imageView.image = appInfo.image;
    48     self.label.text = appInfo.name;
    49 }
    50 
    51 
    52 - (IBAction)downloadClick {
    53     // 创建弹窗,提示下载完成
    54     UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(80, 360, self.superview.bounds.size.width - 80 *2, 40)];
    55     // 弹窗背景颜色
    56     label.backgroundColor = [UIColor lightGrayColor];
    57     
    58     // 设置文字
    59     LWTAppInfoList *appInfo = self.appInfo;
    60     label.text = [NSString stringWithFormat:@"安装 %@ 成功",appInfo.name];
    61     label.font = [UIFont systemFontOfSize:14.0];
    62     label.textAlignment = NSTextAlignmentCenter;
    63     label.textColor = [UIColor whiteColor];
    64     
    65     label.alpha = 0.0;
    66     // 向UIView中添加弹窗
    67     [self.superview addSubview:label];
    68     
    69     [UIView animateWithDuration:1.2 animations:^{
    70         label.alpha = 1.0;
    71         self.downloadButton.enabled = 0;
    72         [self.downloadButton setTitle:@"已下载" forState:UIControlStateDisabled];
    73     } completion:^(BOOL finished) {
    74         [UIView animateWithDuration:1.0 animations:^{
    75             label.alpha = 0.0;
    76         } completion:^(BOOL finished) {
    77             [label removeFromSuperview];
    78         }];
    79     }];
    80 }
    81 @end

    plist文件:app.plist

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
     3 <plist version="1.0">
     4 <array>
     5     <dict>
     6         <key>name</key>
     7         <string>天天酷跑</string>
     8         <key>icon</key>
     9         <string>icon_00</string>
    10     </dict>
    11     <dict>
    12         <key>name</key>
    13         <string>全民飞机大战</string>
    14         <key>icon</key>
    15         <string>icon_01</string>
    16     </dict>
    17     <dict>
    18         <key>name</key>
    19         <string>Flappy Bird</string>
    20         <key>icon</key>
    21         <string>icon_02</string>
    22     </dict>
    23     <dict>
    24         <key>name</key>
    25         <string>天天飞车</string>
    26         <key>icon</key>
    27         <string>icon_03</string>
    28     </dict>
    29     <dict>
    30         <key>name</key>
    31         <string>节奏大师</string>
    32         <key>icon</key>
    33         <string>icon_04</string>
    34     </dict>
    35     <dict>
    36         <key>name</key>
    37         <string>爸爸去哪儿</string>
    38         <key>icon</key>
    39         <string>icon_05</string>
    40     </dict>
    41     <dict>
    42         <key>name</key>
    43         <string>欢乐斗地主</string>
    44         <key>icon</key>
    45         <string>icon_06</string>
    46     </dict>
    47     <dict>
    48         <key>name</key>
    49         <string>天天爱消除</string>
    50         <key>icon</key>
    51         <string>icon_07</string>
    52     </dict>
    53     <dict>
    54         <key>name</key>
    55         <string>神庙逃亡2</string>
    56         <key>icon</key>
    57         <string>icon_08</string>
    58     </dict>
    59     <dict>
    60         <key>name</key>
    61         <string>欢乐麻将</string>
    62         <key>icon</key>
    63         <string>icon_09</string>
    64     </dict>
    65     <dict>
    66         <key>name</key>
    67         <string>保卫萝卜2</string>
    68         <key>icon</key>
    69         <string>icon_10</string>
    70     </dict>
    71     <dict>
    72         <key>name</key>
    73         <string>神偷奶爸</string>
    74         <key>icon</key>
    75         <string>icon_11</string>
    76     </dict>
    77 </array>
    78 </plist>

    xib文件:appInfoView.xib

     1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
     2 <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="5053" systemVersion="13C64" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
     3     <dependencies>
     4         <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
     5     </dependencies>
     6     <objects>
     7         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
     8         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
     9         <view contentMode="scaleToFill" id="C0v-yf-zPJ" customClass="LWTAppInfoView">
    10             <rect key="frame" x="0.0" y="0.0" width="80" height="90"/>
    11             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
    12             <subviews>
    13                 <imageView userInteractionEnabled="NO" tag="1" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="icon_00" translatesAutoresizingMaskIntoConstraints="NO" id="VRa-mS-qp6">
    14                     <rect key="frame" x="0.0" y="0.0" width="80" height="50"/>
    15                     <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
    16                 </imageView>
    17                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" tag="2" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ec6-JM-UpD">
    18                     <rect key="frame" x="0.0" y="49" width="80" height="20"/>
    19                     <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
    20                     <fontDescription key="fontDescription" type="system" pointSize="12"/>
    21                     <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
    22                     <nil key="highlightedColor"/>
    23                 </label>
    24                 <button opaque="NO" tag="3" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="LY7-KP-ajm">
    25                     <rect key="frame" x="15" y="70" width="50" height="20"/>
    26                     <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
    27                     <fontDescription key="fontDescription" type="system" pointSize="13"/>
    28                     <state key="normal" title="下载" backgroundImage="buttongreen">
    29                         <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
    30                     </state>
    31                     <state key="highlighted" backgroundImage="buttongreen_highlighted"/>
    32                     <connections>
    33                         <action selector="downloadClick" destination="C0v-yf-zPJ" eventType="touchUpInside" id="sDN-GQ-cZc"/>
    34                     </connections>
    35                 </button>
    36             </subviews>
    37             <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
    38             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
    39             <connections>
    40                 <outlet property="downloadButton" destination="LY7-KP-ajm" id="h4A-GG-XLX"/>
    41                 <outlet property="imageView" destination="VRa-mS-qp6" id="DAr-Ir-Aa0"/>
    42                 <outlet property="label" destination="ec6-JM-UpD" id="cVj-wx-BkW"/>
    43             </connections>
    44         </view>
    45     </objects>
    46     <resources>
    47         <image name="buttongreen" width="193" height="81"/>
    48         <image name="buttongreen_highlighted" width="193" height="81"/>
    49         <image name="icon_00" width="65" height="65"/>
    50     </resources>
    51 </document>
  • 相关阅读:
    Magento开发文档(一):Magento入门
    Magento开发文档(三):Magento控制器
    CSS 第一天
    iOS 关闭定时器
    thinkphp 5.0 Request使用
    iOS icon与启动图片
    数组
    PHP获取表单变量
    iOS ipa 包优化
    UIImage 渲染模式
  • 原文地址:https://www.cnblogs.com/wentianblog/p/3748788.html
Copyright © 2020-2023  润新知