可移动改变的大小的View - 代码库 - CocoaChina_让移动开发更简单
以上是一位开发者上传到网络上的源码,效果图如下:
效果:中心的视图可以拖动。四角的小视图分别可以按照图示方向对主视图的大小进行修改
设计层次:用了两层视图的设计关系。LBorderView(父类视图) 和 BaseMoveView (子类视图)(还有一个子类视图没有多做解释)
LBorderView:主要作用负责绘制视图的外观(带有一个CAShapeLayer的属性,在视图上画出了圆角的样式)(重写了多个属性的set方法,在其中加入了重新配置layer的代码,使得layer可以被方便的重绘)(可以自定义暴露出的接口做更多的自定义的设置)
BaseMoveView:主要实现了四个小view的各个功能。(通过手势)
设计的核心在于四个小view的拖动手势的实现。当拖动一个小view时,更新这个小view的位置并根据和它的对角线上的view确定主视图的位置大小。重新设置该属性。重绘了主视图。完成了更新。
先理清主要的框架,剩下的小的属性设置可以由最后在加上去。
值得学习借鉴的点:
1:手势的回调规范写法:根据手势的state状态值对回调进行处理。
2: 设计组件时的分割功能的思想。(将主视图的展示与小视图的功能分割)
3:在限制主视图的活动范围时使用了MIN MAX的两个宏。(简介代码)
4:一些小的很方便的封装 例如:
+ (UIImageView*)createImageViewWithBackgruandColor:(UIColor *)color imageName:(NSString *)imageName{
UIImageView *imageView = [UIImageView new];
if(imageName != nil){
imageView.image = [UIImage imageNamed:imageName];
}
imageView.backgroundColor = color;
return imageView;
}