zoukankan      html  css  js  c++  java
  • UITableViewHeaderFooterView的使用+自己主动布局

    UITableViewHeaderFooterView的使用+自己主动布局

    使用UITableView的header或footer复用时,假设採用自己主动布局,你会发现有约束冲突,以下这样写能够消除约束冲突:


    #import <UIKit/UIKit.h>

    @interface SectionView : UITableViewHeaderFooterView

    @property (nonatomic, copy) NSString *sectionTitle;

    @end



    #import "SectionView.h"

    @interface SectionView ()
    {
        UIImageView *titleBgImageView;
        UIImageView *timePonitImageView;
        UIImageView *circleImageView;
        UILabel *titleLabe;
    }
    @end

    @implementation SectionView

    // 带有复用
    - (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier
    {
        self = [super initWithReuseIdentifier:reuseIdentifier];
        if (self) {
            [self createUI];
        }
        return self;
    }


    - (void)createUI
    {
        titleBgImageView = [[UIImageView alloc] initForAutoLayout];
        titleBgImageView.userInteractionEnabled = NO;
        UIImage *image = [UIImage imageNamed:@"event_bottom_line"];
        image = [image stretchableImageWithLeftCapWidth:image.size.width*0.5 topCapHeight:image.size.height*0.5];
        titleBgImageView.image = image;
        [self.contentView addSubview:titleBgImageView];
        
        
        circleImageView = [[UIImageView alloc] initForAutoLayout];
        UIImage *circleImage = [UIImage imageNamed:@"event_blue1"];
        circleImage = [circleImage stretchableImageWithLeftCapWidth:circleImage.size.width*0.5 topCapHeight:circleImage.size.height*0.5];
        
        circleImageView.image = circleImage;
        [self.contentView addSubview:circleImageView];

        
        timePonitImageView = [[UIImageView alloc] initForAutoLayout];
        timePonitImageView.image = [UIImage imageNamed:@"event_write_line"];
        [self.contentView addSubview:timePonitImageView];
        
        
        titleLabe = [[UILabel alloc] initForAutoLayout];
        titleLabe.font = [UIFont systemFontOfSize:13];
        titleLabe.textColor = [UIColor whiteColor];
        titleLabe.textAlignment = NSTextAlignmentCenter;
        [circleImageView addSubview:titleLabe];
       
    }

    把布局代码写到这里

    - (void)layoutSubviews
    {
        [super layoutSubviews];
        
        [titleBgImageView autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
        
        [circleImageView autoPinEdgeToSuperviewEdge:ALEdgeLeading withInset:8];
        [circleImageView autoPinEdgeToSuperviewEdge:ALEdgeTrailing withInset:8];
        [circleImageView autoSetDimension:ALDimensionHeight toSize:23];
        [circleImageView autoAlignAxisToSuperviewAxis:ALAxisHorizontal];
        
        [timePonitImageView autoPinEdgeToSuperviewEdge:ALEdgeLeading withInset:16];
        [timePonitImageView autoPinEdgeToSuperviewEdge:ALEdgeTop withInset:39/2.0-4];
        [timePonitImageView autoSetDimensionsToSize:CGSizeMake(9, 23.5)];
        
        [titleLabe autoCenterInSuperview];
        [titleLabe autoSetDimension:ALDimensionWidth toSize:200];
        
    }

  • 相关阅读:
    工具类
    开发中用到的工具
    项目中另外添加有用的文件:404
    如何组织项目结构:约定优于配置
    媒体查询
    响应式网站开发需要掌握的技术及国内外主流浏览器
    响应式网站概念
    sql存储过程,raisError后要return错误代码,过程最后要return 0
    delphi用TAdoStoredProc调用存储过程,兼容sql2005、2008、2014的远程事务问题
    网页视频下载牛逼工具,支持各种格式转换,比如腾讯视频格式qlv转mp4
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5212507.html
Copyright © 2011-2022 走看看