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];
}
UITableViewHeaderFooterView的使用+自己主动布局的更多相关文章
- IOS不用AutoLayout也能实现自己主动布局的类(3)----MyRelativeLayout横空出世
对于IOS开发人员来说,在自己主动布局出现前仅仅能通过计算和设置frame的值来处理.这样设置位置时就会出现非常多硬编码,同一时候在屏幕旋转和不同屏幕之间适配时须要编码又一次调整位置和尺寸,我们也能够 ...
- iOS_ScrollView的自己主动布局
ScrollView的自己主动布局稍显麻烦.但也是有规律可循, 下面就是仅竖向滑动的scrollView加入约束的固定做法 1.在控制器的view加入一个label.取名做anchor 2.给anch ...
- 他们主动布局(autolayout)环境的图像编辑器
hi,all: 在经过了一番犹豫之后.我决定将我自己做的这个小APP的源代码发布给大家: 其出发点是和大家一起学习iOS开发.仅供学习參考之用. 之前代码是托管与gitlab 上的,今天我将其pull ...
- iOS 自己主动布局教程
springs和struts的问题 你肯定非常熟悉autosizing masks-也被觉得是springs&struts模式.autosizing mask决定了当一个视图的父视图大小改变时 ...
- CSS3 网格布局(grid layout)基础知识 - 隐式网格自己主动布局(grid-auto-rows/grid-auto-columns/grid-auto-flow)
网格模板(grid-template)属性及其普通写法(longhands)定义了一个固定数量的轨道.构成显式网格. 当网格项目定位在这些界限之外.网格容器通过添加隐式网格线生成隐式网格轨道. 这些隐 ...
- Fragment为载体可自己主动布局的CardView(GitHub上写开源项目初体验)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 前些天一直在看Android5.0 的Material Desgin,里面新增 ...
- 【iOS开发-48】九宫格布局案例:自己主动布局、字典转模型运用、id和instancetype差别、xib反复视图运用及与nib关系
本次九宫格案例: (1)导入app.plist和各种图片素材,方便兴许开发.实际开发中,也是如此. (2)把plist中数组导入进来. --由于本案例中app.plist终于是一个数组,数组里面是字典 ...
- IOS自己主动布局中的浮动布局(6)----MyFloatLayout横空出世
https://github.com/youngsoft/MyLinearLayout 前言 在MyLayout的6大布局中,每种布局都有不同的应用场景. 且每种布局的子视图的约束机制不一样:线性布局 ...
- NSLayoutConstraint-代码实现自己主动布局的函数使用方法说明
[NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelat ...
随机推荐
- PHP自练项目中个人中心创建,修改,验证(服务器端和客户端验证)
当注册成功到登录后进入个人中心,查看和修改自己的资料 第一步:创建个人中心: <?php //定义个常量,用来授权调用includes里面的文件 define('IN_TG',true); // ...
- Iterator(迭代器)接口 --对象循环遍历
<?php class MyIterator implements Iterator { private $var = array(); public function __construct ...
- C语言之猜数字游戏
猜数字游戏 猜数字游戏是以前功能机上的一款益智游戏,计算机会根据输入的位数随机分配一个符合要求的数据,计算机输出guess后便可以输入数字,注意数字间需要用空格或回车符加以区分,计算机会根据输入信息给 ...
- [置顶] High Performance Canvas Game for Android
Rule #0 为移动平台进行优化 为移动平台进行优化是十分重要的,因为移动平台的性能大概只有桌面平台的1/10左右(*1),它通常意味着: 更慢的CPU速度,这意味着不经过优化的JavaScript ...
- 修改MojoWeixin 只保留用户name 取消群昵称
<pre name="code" class="python"> if($msg->type eq "friend_message& ...
- 数据结构——队列(Queues)
队列的存储特性:FIFO(first in first out)即先进先出原则 单向/双向队列 *优先队列(与queue不同) 存储方式: 带尾指针的单向链表 / 数组 queue类: queue() ...
- JAVA中IO和异常处理练习
1.SystemI\O练习:1)通过键盘输入若干字符,并通过显示器输出:2)定义一个静态方法validOrNot()用于对输入的字符进行合法性校验,若包含非英文字符,则抛出IllegalStringE ...
- linux之文本编辑器
[目标] 管理员在进行系统操作的时候,不可避免地会对文本进行修改,如进行各种服务程序配置文件的修改,使程序对用户提供不同的服务效果.在本章我们向大家介绍Linux上常见的编辑器ed.vi.emacs, ...
- 王立平--android事件监听的3种方式
第一种通常在activity组件的oncreate事件中直接定义,直接动作. 这样的方式每一个控件都定义一次.通常不方便. Button btn = (Button) findViewById(R.i ...
- C++ 学习笔记3,struct长度測试,struct存储时的对齐方式
之所以专门为struct的长度写一篇測试,是由于原来c++对于struct的变量, 在分配内存的时候,c++对struct有一种特殊的存储机制. 看以下的測试: 一.在Windows7 32bit , ...