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];

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-21 11:53:45

UITableViewHeaderFooterView的使用+自动布局的相关文章

SDAutoLayout:比masonry更简单易用的自动布局库

SDAutoLayout:一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于做最简单易用的AutoLayout库. [SDAutoLayout 视频教程:http://www.letv.com/ptv/vplay/24038772.html] ☆新增:cell高度自适应 + label文字自适应☆ >>>>> tableview cell 自动高度设置只需要3步 1. >> 设置cell高度自适应:

ios-AutoLayout(自动布局代码控制)简单总结

转自:http://blog.sina.com.cn/s/blog_7c336a830102vaht.html 原理:IOS6.0 之后,苹果优化了UI界面的布局方式,提出了自动布局的概念,和之前的autoresizing相比功能更强大.子视图基于父视图的自动布局显示.都是父视图去添加对子视图的约束. 在这里主要说的是通过代码对自动布局视图的实现. 代码中一般用到的有两个添加约束的方式: 1.- (void)addConstraint:(NSLayoutConstraint *)constrai

自动布局

Autolayout是一种“自动布局”技术,专门用来布局UI界面 Autolayout能很轻松地解决屏幕适配问题 Autolayout的两条核心概念: >1 参照:通过参照其他控件或父控件来设置当前控件地位置和大小 >2 约束Constraints(规则):通过添加约束限制控件地位置和大小 代码实现Autolayout的步骤: 1. 利用NSLayoutConstraint类创建具体的约束对象 2. 添加约束对象到相应的view上 - (void)addConstraint:(NSLayout

轻量级应用开发之(06)Autolayout自动布局

一 什么是Autolayout Autolayout是一种“自动布局”技术,专门用来布局UI界面的. 自IOS7 (Xcode 5)开始,Autolayout的开发效率得到很大的提高. 苹果官方也推荐开发者尽量使用Autolayout来布局UI界面. Autolayout能很轻松的解决屏幕适配的问题. 1. 关闭自动布局 打开面板(Main.storyboard)-> 点击 View Controller -> 取消 Use Auto Layout . 默认是  302 * 520 的尺寸,

使用第三方框架 Masonry 实现自动布局

使用第三方框架 Masonry 实现自动布局 时间:2015-02-10 11:08:41      阅读:4595      评论:0      收藏:0      [点我收藏+] 由于前两天都在学习自动布局的使用,但是又觉得苹果原生的方式太过于麻烦,而且也不易于理解,昨天听人说了有个第三方框架也可以实现自动布局的功能,然后在https://github.com/上找到了Mansonry这个框架,使用起来真的减少了很多时间,而且代码直观,更加容易理解. 送上源码地址:https://githu

iOS 自动布局扩展应用:代码中动态调整布局常量

一.设计需求 iOS Storyboard 自动布局技术,是iOS 6才出来的新技术,相当于多屏幕分辩率下自适应的技术. 但是一些复杂情况还是难处理. 比如有一个界面需求,进度条上显示标签,这个需求不难,难的是显要在显示表格框内,在各种机型显示正常. 最初设定是垂直居中向上偏15个像素 这是iPhone 4S 显示效果,下面与滑块还有错位 但是在iPhone 6下显示,下面有错位,但是上面留空太多 但如果把偏移量设为21.则出现另一种情况. 大屏幕的手机显示完美. 但是iPhone 4S下就错位

ios UItableView,UITableViewHeaderFooterView分组头部的重用机制,简单地仿射变换CGAffineTransform

怎样设置包括第一栏在内相同高度的section(小技巧,虽然容易但容易忽略) *第一步,在viewdidload里将尾部设为0,table.sectionFooterHeight = 0;(代理方法)- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ return 0; }虽然也可以设置尾部高度,但是设置后没有效果 第二步,调用tableView的代理方法- (CGF

使用第三方框架 Keep Layout 实现简单的自动布局

之前有写了一篇Masonry实现自动布局的随笔,今天无聊的时候又发现了另外一个自动布局的第三方框架Keep Layout,使用起来感觉比Masonry简单一点,相比之下容易理解? 附上源码地址:https://github.com/iMartinKiss/KeepLayout 关于一些属性的介绍: 属性间的关系以及优先级: 更多内容请参考网站说明. 附上简单自动布局的代码以及效果图: 1 - (void)viewDidLoad { 2 [super viewDidLoad]; 3 // Do a

iOS自动布局

一开始用VFL语言都是这样实现自动布局的,一两个控件还好,多几个控件简直不能忍. _backgroundImageView = [[UIImageView alloc] init]; _backgroundImageView.backgroundColor = [UIColor clearColor]; _backgroundImageView.translatesAutoresizingMaskIntoConstraints = NO; [self addSubview:_background