zoukankan      html  css  js  c++  java
  • ios-利用xib重新写 应用管理

    //
    //  app.h
    //  应用管理
    //
    //  Created by YaguangZhu on 15/7/31.
    //  Copyright (c) 2015年 YaguangZhu. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface app : NSObject
    
    @property (nonatomic,copy) NSString *miaoshu;
    @property (nonatomic,copy) NSString *icon;
    
    - (app *)initWithDict:(NSDictionary *)dict;
    + (app *)appwithDict:(NSDictionary *)dict;
    
    @end
    //
    //  app.m
    //  应用管理
    //
    //  Created by YaguangZhu on 15/7/31.
    //  Copyright (c) 2015年 YaguangZhu. All rights reserved.
    //
    
    #import "app.h"
    
    @implementation app
    
    -(app *)initWithDict:(NSDictionary *)dict
    {
        if (self = [super init]) {
            self.miaoshu = dict[@"miaoshu"];
            self.icon = dict[@"icon"];
        }
        return self;
    }
    + (app *)appwithDict:(NSDictionary *)dict
    {
        return [[self alloc] initWithDict:dict];
    }
    @end
    //
    //  CZAppView.h
    //  应用管理
    //
    //  Created by YaguangZhu on 15/8/1.
    //  Copyright (c) 2015年 YaguangZhu. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    @class app;
    @interface CZAppView : UIView
    @property (nonatomic,strong) app *model;

    + (instancetype)appView;

    @end
    //
    //  CZAppView.m
    //  应用管理
    //
    //  Created by YaguangZhu on 15/8/1.
    //  Copyright (c) 2015年 YaguangZhu. All rights reserved.
    //
    
    #import "CZAppView.h"
    #import "app.h"
    @interface CZAppView ()
    
    @property (weak, nonatomic) IBOutlet UIImageView *imgViewIcon;
    @property (weak, nonatomic) IBOutlet UILabel *lblName;
    @property (weak, nonatomic) IBOutlet UIButton *btnDownload;
    
    @end
    @implementation CZAppView
    
    /*
    // Only override drawRect: if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    - (void)drawRect:(CGRect)rect {
        // Drawing code
    }
    */
    - (void)setModel:(app *)model
    {
        _model = model;
        
        self.imgViewIcon.image = [UIImage imageNamed:model.icon];
        self.lblName.text = model.miaoshu;
    }

    + (instancetype)appView

    
    

    {

    
    

         NSBundle *rootBoundle = [NSBundle mainBundle];

    
    

        return  [[rootBoundle loadNibNamed:@"CZAppView" owner:nil options:nil ] lastObject];

    
    

    }

    @end
    //
    //  ViewController.m
    //  应用管理
    //
    //  Created by YaguangZhu on 15/7/31.
    //  Copyright (c) 2015年 YaguangZhu. All rights reserved.
    //
    
    #import "ViewController.h"
    #import "app.h"
    #import "CZAppView.h"
    
    @interface ViewController ()
    
    @property (nonatomic,strong) NSArray *apps;
    
    
    @end
    
    @implementation ViewController
    - (NSArray *)apps
    {
        if (_apps == nil) {
            NSString *path = [[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil];
            
            NSArray *array = [NSArray arrayWithContentsOfFile:path];
            
            NSMutableArray *arrayModels = [NSMutableArray array];
            
            for (NSDictionary *dict in array) {
                app *model = [app appwithDict:dict];
                
                
               // model.miaoshu = dict[@"miaoshu"];
               // model.icon = dict[@"icon"];
                
                [arrayModels addObject:model];
            }
            _apps =arrayModels;
            
        }
        
        return  _apps;
       
    }
    
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        int colums =3;
        CGFloat viewWidth = self.view.frame.size.width;
        
        CGFloat appW = 75;
        CGFloat appH = 90;
        CGFloat marginTop = 30;
        CGFloat maginX = (viewWidth - colums*appW)/ (colums+1);
        CGFloat maginY = maginX;
        
         for (int i=0;i<self.apps.count;i++)//9 = self.apps.count
        {
            
            app *appModel = self.apps[i];
            
            //xib创建控件
          //  NSBundle *rootBoundle = [NSBundle mainBundle];
           // CZAppView *appview = [[rootBoundle loadNibNamed:@"CZAppView" owner:nil options:nil ] lastObject];
            //封装下

            CZAppView *appview = [CZAppView appView];

    int colIdx = i % colums;
            int rowIdx = i / colums;
            CGFloat appX = maginX+ colIdx *(appW +maginX);
            CGFloat appY = marginTop +rowIdx *(appH +maginY);
            appview.frame = CGRectMake(appX, appY, appW, appH);
        
            [self.view addSubview:appview];
           // 用tag来给控件赋值
    //        UIImageView *imgViewIcon =  (UIImageView *)[appview viewWithTag:1000];
    //        imgViewIcon.image = [UIImage imageNamed:appModel.icon];
    //        
    //        UILabel *lblName = (UILabel*)[appview viewWithTag:2000];
    //        lblName.text = appModel.miaoshu;
            //用自己创建一个类 然后拖拉控件来赋值
    //        appview.imgViewIcon.image = [UIImage imageNamed:appModel.icon];
    //        appview.lblName.text = appModel.miaoshu;
            
            //以上不这样写说为了安全 和封装性好
            appview.model = appModel;
        
        }
            
    }
    
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
  • 相关阅读:
    mybatis 错误 Invalid bound statement (not found)
    Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.
    bug 记录 Unable to start ServletWebServerApplicationContext due to multiple ServletWebServerFactory beans
    解决:The Tomcat connector configured to listen on port 8182 failed to start. The port may already be in use or the connector may be misconfigured.
    jquery validate 验证插件 解决多个相同的Name 只验证第一个的方案
    phpStorm+xdebug调试(php7.3)
    小程序视频多个视频播放与暂停
    CSS实现单行、多行文本溢出显示省略号(…)
    Packet for query is too large (4,544,730 > 4,194,304). You can change this value on the server by setting the 'max_allowed_packet' variable.
    idea自动在文件头中添加作者和创建时间
  • 原文地址:https://www.cnblogs.com/zhuyaguang/p/4694138.html
Copyright © 2011-2022 走看看