美文网首页
iOS十种常用代码片

iOS十种常用代码片

作者: 活最好的自己 | 来源:发表于2017-07-13 17:04 被阅读30次

    把常用代码写入代码块, 输入快捷单词就能弹出对应的代码段

    目录
    1. 设置 UI
    2. 四种类型的懒加载
    3. 创建 tableview
    4. 创建 collectionview
    5. UICollectionViewCell的创建
    6. UITableViewCell 的创建
    7. 复用 cell 的 id
    8. 网络库的初始化
    9. 给分类添加属性
    10. 添加属性
    11. YYModel数据校验
    

    1. 设置 UI

    setupUI

    #import <PTVSMacro/PTVMacro.h>
    #import <PTVSConfig/PTVSConfig.h>
    #import "MJRefresh.h"
    @property (nonatomic,strong) UIImageView *<#actBgImageView#>;
    
    - (void)setupControl{
        [self _initializeViews];
        [self _makeConstraints];
        [self _initializeBaseConfig];
    }
    
    - (void)_initializeBaseConfig{
    }
    
    - (void)_initializeViews {
        [self addSubview:<#self.actBgImageView#>];
    }
    
    - (void)_makeConstraints {
        [<#self.actBgImageView#> mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(<#self#>).offset(fitIPHONE6Width(15));
            make.left.mas_equalTo(<#self#>).offset(fitIPHONE6Width(15));
            make.bottom.mas_equalTo(<#self#>).offset(fitIPHONE6Width(-15));
            make.right.mas_equalTo(<#self#>).offset(fitIPHONE6Width(-15));
        }];
    }
    

    2. 四种类型的懒加载

    lazy_create

    #import "PTVSkinManager.h"
    #import "UIFixRegionButton.h"
    #import <PTVSMacro/PTVMacro.h>
    #import <PTVSConfig/PTVSConfig.h>
    
    @property (nonatomic,strong) UIView *<#middleView#>;
    @property (nonatomic,strong) UIImageView *<#actBgImageView#>;
    @property (nonatomic,strong) UIFixRegionButton *<#bottomBtn#>;
    @property (nonatomic,strong) UILabel *<#actTipsLabel#>;
    
    - (UIView *)<#middleView#> {
    if (!_<#middleView#>) {
    UIView *middleView = [[UIView alloc] init];
    middleView.backgroundColor = [UIColor whiteColor];
    _<#middleView#> = middleView;
    }
    return _<#middleView#>;
    }
    - (UIImageView *)<#actBgImageView#> {
    if (!_<#actBgImageView#>) {
    UIImage *img = [[PTVSkinManager sharedManager] loadImageNoCache:@"carteam/车队查房消息提醒弹板"];
    UIEdgeInsets edge = UIEdgeInsetsMake(10, 10, 10, 10);
    img = [img resizableImageWithCapInsets:edge resizingMode:UIImageResizingModeStretch];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:img];
    imageView.userInteractionEnabled = YES;
    imageView.contentMode = UIViewContentModeScaleAspectFill;
    _<#actBgImageView#> = imageView;
    }
    return _<#actBgImageView#>;
    }
    
    - (UIFixRegionButton *)<#bottomBtn#> {
    if (!_<#bottomBtn#>) {
    UIFixRegionButton *button = [UIFixRegionButton buttonWithType:UIButtonTypeCustom];
    button.titleLabel.font = [[PTVConfig instance] boldFont:18 * kViewWidthRate];
    [button setTitle:@"发车队红包" forState:UIControlStateNormal];
    [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    [button addTarget:self action:@selector(onBottomBtnClick) forControlEvents:UIControlEventTouchUpInside];
    _<#bottomBtn#> = button;
    [self enableSendBtnState:NO];
    }
    return _<#bottomBtn#>;
    }
    
    - (void)enableSendBtnState:(BOOL)enabel{
        if (enabel) {
            UIImage *img = [UIImage imageNamed:@"carteam_icon_s"];
            img = [img resizableImageWithCapInsets:UIEdgeInsetsMake(0, img.size.width * 0.5, 0, img.size.width * 0.5) resizingMode:UIImageResizingModeStretch];
            [_<#bottomBtn#> setBackgroundImage:img forState:UIControlStateNormal];
        } else {
            UIImage *img = [[PTVSkinManager sharedManager] loadImageNoCache:@"carteam2nd/车队-统一确认大按钮不可点击"];
            UIEdgeInsets edge = UIEdgeInsetsMake(0, img.size.width/2.0, 0, img.size.width/2.0);
            img = [img resizableImageWithCapInsets:edge resizingMode:UIImageResizingModeStretch];
            [_<#bottomBtn#> setBackgroundImage:img forState:UIControlStateNormal];
        }
        _<#bottomBtn#>.enabled = enabel;
    }
    
    - (void)onBottomBtnClick{
        
    }
    
    - (UILabel *)<#actTipsLabel#> {
    if (!_<#actTipsLabel#>) {
    UILabel *label = [UILabel new];
    label.textColor = [PTVConfig themeColor];
    label.textAlignment = NSTextAlignmentCenter;
    label.font = [[PTVConfig instance] normalFont:18 * kViewWidthRate];
    label.text = @"车队查房";
    label.numberOfLines = 1;
    _<#actTipsLabel#> = label;
    }
    return _<#actTipsLabel#>;
    }
    
    

    3. 创建 tableview

    add_tableview

    #import <PTVSMacro/PTVMacro.h>
    #import <PTVSConfig/PTVSConfig.h>
    #import "MJRefresh.h"
    
    @property (nonatomic,weak) UITableView *<#competitionTableView#>;
    @property (nonatomic,strong) NSArray *listDataArray;
    
    #pragma mark listView
    
    - (UITableView *)competitionTableView
    {
        if (_<#competitionTableView#> == nil)
        {
            UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
            tableView.backgroundColor = <#KBgColor#>;
            tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
            tableView.delegate = self;
            tableView.dataSource = self;
            WeakSelf
            tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
                [weakSelf requestMatchScheduleNoLoadingView];
            }];
            tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
                [weakSelf requestMatchScheduleMoreDataNoLoadingView];
            }];
            //        tableView.allowsSelection = NO;
            tableView.sectionFooterHeight = <#5#>;
            tableView.sectionHeaderHeight = <#0#>;
            tableView.rowHeight = <#304.5#>;
            tableView.showsVerticalScrollIndicator = NO;
            
            UIView *tableViewHeader = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 8)];
            tableViewHeader.backgroundColor = <#KBgColor#>;
            tableView.tableHeaderView= tableViewHeader;
            
            [tableView registerClass:[<#PTVCompetitionListViewCell#> class] forCellReuseIdentifier:[<#PTVCompetitionListViewCell#> reuseId]];
            [self addSubview:tableView];
            _<#competitionTableView#> = tableView;
        }
        return _<#competitionTableView#>;
    }
    
    /**
     *  上拉刷新
     */
    - (void)requestMatchScheduleMoreDataNoLoadingView
    {
        WeakSelf
        [<#_mgr#> requestMatchScheduleMoreData:^(BOOL succ, NSArray<__kindof PTVCompetitionData *> *array,BOOL isLastPage) {
    //        [weakSelf _analyzeMoreScheduleData:succ array:array];
            [weakSelf _showRefreshFinishedView:isLastPage];
        }];
    }
    
    /**
     *  下拉刷新
     */
    - (void)requestMatchScheduleNoLoadingView
    {
        WeakSelf
        [<#_mgr#> requestMatchSchedule:^(BOOL succ, NSArray<__kindof PTVCompetitionData *> *array,BOOL isLastPage) {
            if (succ)
            {
                weakSelf.listDataArray = array;
                [weakSelf.<#competitionTableView#> reloadData];
            }
            [weakSelf _showRefreshFinishedView:isLastPage];
        }];
    }
    
    - (void)_showRefreshFinishedView:(BOOL)isLastPage
    {
        if (isLastPage)
        {
            [self.<#competitionTableView#>.mj_footer endRefreshingWithNoMoreData];
        }
        else
        {
            [self.<#competitionTableView#>.mj_footer endRefreshing];
        }
    }
    
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        return _listDataArray.count;
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return 1;
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        <#PTVCompetitionListViewCell#> *cell = [tableView dequeueReusableCellWithIdentifier:[<#PTVCompetitionListViewCell#> reuseId] forIndexPath:indexPath];
        <#<#PTVCompetitionListViewCell#>#> *data = _listDataArray[indexPath.section];
        return cell;
    }
    
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        <#PTVCompetitionListViewCell#> *cell = [tableView cellForRowAtIndexPath:indexPath];
    //    [cell pushVideoController];
    }
    
    - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
    {
        return <#7#>;
    }
    
    - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
    {
        UIView *view = [UIView new];
        if (section == _listDataArray.count - 1)
        {
            view.backgroundColor = <#KBgColor#>;
        }
        else
        {
            view.backgroundColor = <#kSubSeparatorLineBgColor#>;
        }
        return view;
    }
    
    

    4. 创建 collectionview

    add_collectionview

    #import <PTVSMacro/PTVMacro.h>
    #import <PTVSConfig/PTVSConfig.h>
    #import "Masonry.h"
    
    @property (nonatomic,strong) NSArray *logoImgArray;
    @property (nonatomic,strong) UICollectionView *<#collectionview#>;
    
    #pragma mark `collectionview set data`
    - (void)setLogoImgArray:(NSArray *)logoImgArray
    {
        _logoImgArray = logoImgArray;
        [self.<#collectionview#> reloadData];
    }
    
    #pragma mark `collectionview lazy load`
    - (UICollectionView *)<#collectionview#>{
        if (_<#collectionview#> == nil) {
            UICollectionView *collectionview = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:[UICollectionViewFlowLayout new]];
            [collectionview registerClass:[<#LuckydrawLogoCollectionViewCell#> class] forCellWithReuseIdentifier:[<#LuckydrawLogoCollectionViewCell#> reuseId]];
            collectionview.delegate = self;
            collectionview.dataSource = self;
            UIView *containerView = self;
            [containerView addSubview:collectionview];
            [collectionview mas_makeConstraints:^(MASConstraintMaker *make) {
                make.center.mas_equalTo(containerView);
                make.size.mas_equalTo(CGSizeMake(fitIPHONE6Width(<#300#>), fitIPHONE6Width(<#300#>)));
                
            }];
            _<#collectionview#> = collectionview;
        }
        return _<#collectionview#>;
    }
    
    #pragma mark <UICollectionViewDelegate,UICollectionViewDataSource>
    - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
    {
        return self.logoImgArray.count;
    }
    
    - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
    {
        <#LuckydrawLogoCollectionViewCell#> *cell = (<#LuckydrawLogoCollectionViewCell#> *)[collectionView dequeueReusableCellWithReuseIdentifier:[<#LuckydrawLogoCollectionViewCell#> reuseId] forIndexPath:indexPath];
        UIImage *img = [self.logoImgArray objectAtIndex:indexPath.row];
        //    [cell setLogoImg:img];
        return cell;
    }
    
    #pragma mark --UICollectionViewDelegateFlowLayout
    
    - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
    {
        return CGSizeMake(<#50#>, <#50#>);
    }
    
    //定义每个UICollectionView 的 margin
    -(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
    {
        return UIEdgeInsetsMake(0, <#10#>, <#10#>, <#10#>);
    }
    
    - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
    {
        return <#10#>;
    }
    
    

    5. UICollectionViewCell的创建

    add_collectionviewCell

    #import <PTVSConfig/PTVSConfig.h>
    #import <PTVSMacro/PTVMacro.h>
    #import "PTVSkinManager.h"
    #import "Masonry.h"
    
    @property (nonatomic,strong) UILabel *<#titleLabel#>;
    @property (nonatomic,strong) UIImageView *<#logoImgView#>;
    
    - (void)setLogoImg:(NSString *)localImgName{
        UIImage *img = [[PTVSkinManager sharedManager] loadImageNoCache:localImgName];
        _<#logoImgView#>.image = img;
    }
    
    - (void)setTitle:(NSString *)text{
        _<#titleLabel#>.text = text;
    }
    
    - (instancetype)initWithFrame:(CGRect)frame{
        if (self = [super initWithFrame:frame]) {
            [self setupControl];
        }
        return self;
    }
    
    - (void)setupControl{
        [self _initializeBaseConfig];
        [self _initializeViews];
        [self _makeConstraints];
    }
    
    - (void)_initializeBaseConfig{
        self.backgroundColor = [UIColor whiteColor];
        self.contentView.backgroundColor = [UIColor whiteColor];
    }
    
    - (void)_initializeViews {
        [self.contentView addSubview:self.<#logoImgView#>];
        [self.contentView addSubview:self.<#titleLabel#>];
    }
    
    - (void)_makeConstraints {
        [self.<#logoImgView#> mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.left.right.mas_equalTo(self.contentView);
            make.height.mas_equalTo(40);
        }];
        [self.<#titleLabel#> mas_makeConstraints:^(MASConstraintMaker *make) {
            make.left.right.mas_equalTo(self.<#logoImgView#>);
            make.bottom.right.mas_equalTo(self.contentView);
        }];
    }
    
    - (UIImageView *)<#logoImgView#> {
        if (!_<#logoImgView#>) {
            UIImageView *imageView = [[UIImageView alloc] init];
            _<#logoImgView#> = imageView;
        }
        return _<#logoImgView#>;
    }
    
    - (UILabel *)<#titleLabel#> {
        if (!_<#titleLabel#>) {
            UILabel *label = [UILabel new];
            label.textColor = UIColorFromRGB(0x333333);
            label.textAlignment = NSTextAlignmentCenter;
            label.font = [[PTVSConfig instance] normalFont:11];
            _<#titleLabel#> = label;
        }
        return _<#titleLabel#>;
    }
    

    6. UITableViewCell 的创建, 和 UICollectionViewCell的创建基本一致, 只是初始化方法名称不一样.

    add_tableviewCell

    #import <PTVSConfig/PTVSConfig.h>
    #import <PTVSMacro/PTVMacro.h>
    #import "PTVSkinManager.h"
    #import "Masonry.h"
    
    @property (nonatomic,strong) UILabel *<#titleLabel#>;
    @property (nonatomic,strong) UIImageView *<#logoImgView#>;
    
    - (void)setLogoImg:(NSString *)localImgName{
        UIImage *img = [[PTVSkinManager sharedManager] loadImageNoCache:localImgName];
        _<#logoImgView#>.image = img;
    }
    
    - (void)setTitle:(NSString *)text{
        _<#titleLabel#>.text = text;
    }
    
    - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
    {
        if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])
        {
            [self setupControl];
        }
        return self;
    }
    
    - (void)setupControl{
        [self _initializeBaseConfig];
        [self _initializeViews];
        [self _makeConstraints];
    }
    
    - (void)_initializeBaseConfig{
        self.backgroundColor = [UIColor whiteColor];
        self.contentView.backgroundColor = [UIColor whiteColor];
    }
    
    - (void)_initializeViews {
        [self.contentView addSubview:self.<#logoImgView#>];
        [self.contentView addSubview:self.<#titleLabel#>];
    }
    
    - (void)_makeConstraints {
        [self.<#logoImgView#> mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.left.right.mas_equalTo(self.contentView);
            make.height.mas_equalTo(40);
        }];
        [self.<#titleLabel#> mas_makeConstraints:^(MASConstraintMaker *make) {
            make.left.right.mas_equalTo(self.<#logoImgView#>);
            make.bottom.right.mas_equalTo(self.contentView);
        }];
    }
    
    - (UIImageView *)<#logoImgView#> {
        if (!_<#logoImgView#>) {
            UIImageView *imageView = [[UIImageView alloc] init];
            _<#logoImgView#> = imageView;
        }
        return _<#logoImgView#>;
    }
    
    
    - (UILabel *)<#titleLabel#> {
        if (!_<#titleLabel#>) {
            UILabel *label = [UILabel new];
            label.textColor = UIColorFromRGB(0x333333);
            label.textAlignment = NSTextAlignmentCenter;
            label.font = [[PTVSConfig instance] normalFont:11];
            _<#titleLabel#> = label;
        }
        return _<#titleLabel#>;
    }
    

    7. 复用 cell 的 id

    reuseid_func

    + (NSString *)reuseId
    {
        return NSStringFromClass([self class]);
    }
    

    8. 网络库的初始化

    network_create

    - (id)init {
        if (self = [super init]) {
            _network = [[PTVHttpNetwork alloc] init];
            [_network responseJSONserializer];
            [_network setSpecialHeader];
        }
        return self;
    }
    

    9. 给分类添加属性

    category_property

    - (PTVAnchorPKManager *)getAnchorPkMgr
    {
        if ([self anchorPkMgr] == nil)
        {
            [self setAnchorPkMgr:[PTVAnchorPKManager new]];
        }
        return [self anchorPkMgr];
    }
    
    - (PTVAnchorPKManager *)anchorPkMgr{
        PTVAnchorPKManager *mgr = objc_getAssociatedObject(self, @selector(anchorPkMgr));
        return mgr;
    }
    
    - (void)setAnchorPkMgr:(PTVAnchorPKManager *)anchorPkMgr{
        objc_setAssociatedObject(self, @selector(anchorPkMgr), anchorPkMgr, OBJC_ASSOCIATION_RETAIN);
    }
    

    10. 添加属性

    @property_strong

    property (nonatomic,strong) UIView *sideView;
    
    

    11. YYModel数据校验

    YYModelCheck

    + (NSDictionary *)modelCustomPropertyMapper {
        return @{@"des" : @"info.des",
                 @"arrayGiftData": @"gift"};
    }
    
    + (NSDictionary *)modelContainerPropertyGenericClass {
        return @{@"arrayGiftData" : [GoddessGiftData class]};
    }
    - (BOOL)modelCustomTransformFromDictionary:(NSDictionary *)dic {
        return YES;
    }
    

    相关文章

      网友评论

          本文标题:iOS十种常用代码片

          本文链接:https://www.haomeiwen.com/subject/hktghxtx.html