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-11-05 14:15:37

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

iOS 自己主动布局教程

springs和struts的问题 你肯定非常熟悉autosizing masks-也被觉得是springs&struts模式.autosizing mask决定了当一个视图的父视图大小改变时,其自身须要做出什么改变.它有一个灵活的或固定不变的margins(struts)吗?它的宽和高要做出什么改变(springs)? 举个样例,一个宽度灵活的视图,假设其父视图边框,那么它也会对应的变宽.一个视图右边拥有固定的margin,那么它的右边缘将会一直粘住其父视图的右边缘. autosizing系统

他们主动布局(autolayout)环境的图像编辑器

hi,all: 在经过了一番犹豫之后.我决定将我自己做的这个小APP的源代码发布给大家: 其出发点是和大家一起学习iOS开发.仅供学习參考之用. 之前代码是托管与gitlab 上的,今天我将其pull到github上来了,大家能够自行下载:git clone [email protected]:lihux/twentyThousandTomatoes.git没有安装git或者不会用的童鞋, 请猛戳github地址:https://github.com/lihux/twentyThousandTo

【iOS开发-48】九宫格布局案例:自己主动布局、字典转模型运用、id和instancetype差别、xib反复视图运用及与nib关系

本次九宫格案例: (1)导入app.plist和各种图片素材,方便兴许开发.实际开发中,也是如此. (2)把plist中数组导入进来. --由于本案例中app.plist终于是一个数组,数组里面是字典.所以我们须要一个数组类型来接受这个plist文件. --我们利用之前掌握的在变量的getter中进行延迟载入数据. #import "ViewController.h" @interface ViewController () @property(nonatomic,strong) NS

IOS布局笔记一(代码实现自己主动布局)

1.将一个试图放置在其父视图的中央位置,使用限制条件. 2.创建两个限制条件:一个是将目标视图的 center.x 位置排列在其父视图的 center.x 位置,而且另外一个是将目标视图的 center.y 位置排列在其父视图的 center.y 位置. 3.首先在 WildCatViewController.h中加入一个Button // // WildCatViewController.h // AutoLayoutDemo // // Created by wildcat on 14-4-

NSLayoutConstraint-代码实现自己主动布局的函数使用方法说明

[NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:view2 attribute:NSLayoutAttributeRight multiplier:1 constant:10] 翻译过来就是:view1的左側.在,view2的右側.再多10个点,的地方. 附视图的属性和关系的值: typedef NS_ENUM(N

谈谈Ext JS的组件——容器与布局

概述 在页面中,比較棘手的地方就是布局.而要实现布局.就得有能维护布局的容器. 能够说,在我试过和使用过的Javascript框架中,Ext JS的布局是做得最优秀的一个,而这得益于它强大的容器类和丰富的布局类.在本文将介绍Ext JS的容器组合和布局类. 容器:Ext.container.Container 容器的主要功能是管理其内部的组件.因而在继承Ext.Component的所有功能的基础上.加入了相应的用来处理内部组件的方法add.insert.remove和removeAll. 在配置

iOS-setNeedsLayout等布局方法

列举下iOS layout的相关方法: layoutSubviews layoutIfNeeded setNeedsLayout setNeedsDisplay drawRect sizeThatFits sizeToFit 大概经常使用的上面几个 , 详细的应该还有别的. layoutSubviews 这种方法,默认没有做不论什么事情,须要子类进行重写 . 系统在非常多时候会去调用这种方法: 1.初始化不会触发layoutSubviews,可是假设设置了不为CGRectZero的frame的时

基于Masonry自己主动计算cell的高度

/** * This is a very very helpful category for NSTimer. * * @author huangyibiao * @email [email protected] * @github https://github.com/632840804 * @blog http://blog.csdn.net/woaifen3344 * * @note Make friends with me. * Facebook: [email protected] (

『干货』分享你最喜欢的技巧和提示(Xcode,objective-c,swift,c...等等)

亲爱的读者们,你们好 !年底将近,分享从过去一年你最喜欢的技巧和建议作为礼物送给新手们.提交你的最喜欢的迅速或objc琐事,实用的提示,意外的发现,实用的解决方法,没用的迷恋,或不论什么其它你认为今年非常酷. 就在以下写下你的评论! 笔者分享总结例如以下(本篇会不定期进行更新) : objective-c 用宏定义检測block是否可用~! #define BLOCK_EXEC(block, ...) if (block) { block(__VA_ARGS__); }; // 宏定义之前的使用