iOS实现UITableView可自由伸缩Header的实现思路
首先,上一下效果图..
思路:
可拉伸图片放的位置咋一看有两种,落在tableHeaderView上或者是落在tableView的(0,0)位置
然而,第一种思路当程序写到图片拉伸的时候就会发现问题,图片的横方向上并不会拉伸,原因是tableHeaderView是配在TableView上的,它的宽度被限制住了,简而言之,第一种思路并不合适.
第二种思路就是落在(0,0)上了.其实就是[tableView addSubView],然后慢慢设置一下位置,程序写下来就基本没什么大问题了.
过程可能遇到的问题:
1.NavgationBar变透明底下还有一条横线.
解决方法:
[self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];
2.NavgationBar怎么变透明的.
解决方法:
setBackgroundColor并不管同, 而setBackgroundImage就可以实现, 接着就变成实现Image改变透明度的问题了, 然而, Image并不存在alpha这个属性, 所以要用到Quartz2D的一些知识.
// 生成纯色背景图 - (UIImage *)createPureColorImageWithColor:(UIColor *)color alpha:(CGFloat)alpha size:(CGSize)size { // 纯色的UIView UIView *pureColorView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height)]; pureColorView.backgroundColor = color; pureColorView.alpha = alpha; // 由上下文获取UIImage UIGraphicsBeginImageContext(size); [pureColorView.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *pureColorImage = UIGraphicsGetImageFromCurrentImageContext(); // 结束上下文 UIGraphicsEndImageContext(); return pureColorImage; }
附上github: https://github.com/samAroundGitHub/UITableViewHeaderStrectching2