iOS DropDownMenu 模仿微博下拉菜单

jopen 9年前

iOS-DropDownMenu

iOS下拉菜单封装,模仿微信和微博顶部和右侧的局部下拉菜单效果

image image

These are the functions you can call from your View Controllers to set the current style of the menu to update its title and color.

+ (instancetype)dropDownView;      - (void)show;      - (void)hide;      - (void)addItemWithTitle:(NSString *)title target:(id)target action:(SEL)action;      - (void)fromView:(UIView *)view;      - (void)setHeight:(CGFloat)height;      - (void)setWidth:(CGFloat)width;      - (void)setBackgroudImage:(UIImage *)backgroudImage headerBorder:(CGFloat)headerBorder;      - (void)setSepatateHeight:(CGFloat)sepatateHeight color:(UIColor *)sepatateColor;      - (void)setMenuUpAndDowm:(CGFloat)value;      - (void)addItemwithButton:(UIButton *)button;      - (void)setMenuLeftAndRight:(CGFloat)value;

功能上还不能完全自动适配好位置,主要是激活它的控件大小(可能激活它的控件实际尺寸很大,但是显示出来的很小)和背景图片的顶部箭头已经透明边框宽度的不确定性,所有加了两个调节menu上下和左右位移的方法,还有一个调节顶部为背景图片留出箭头高度的方法,来方便适应大多数的情况。刚刚写好,还没来得及松一口气休息,发现新买不久的iPad屏幕坏掉了,>_<

第二次更新(2015/08/17)发现无论如何去想办法,还总是会出现一些问题导致不能够很好的适应所有的情况,尤其是当屏幕旋转时,会出现一些意想不到的问题,比如下拉菜单的位置不能够自动适应横屏,内部控件由于重新调用layoutSubveiws方法时,contentView的Subviews数量出现递增的异常导致布局错乱。重新参考了下新浪微博和首页的顶部title下拉菜单和位置右上角的下拉菜单,发现它们其实不是一样的:新浪微博的下拉菜单的蒙板是盖住整个window,所有当下拉菜单出现时,点击屏幕任意地方,下拉菜单都会消失,并且在切换屏幕方向时,下拉菜单会自动消失,这个应该也是因为采用了和我一样的方法,不能够很好的适应屏幕方向变化,我索性也将我的下拉菜单在屏幕方向改变时,让其消失,但是没有做到在下拉菜单自己的view里边去监控屏幕方向的改变,而只能在调用他的ViewController里边去做这个事情,为了降低依赖关系,不想要 ViewController去创建一个类保存它来让两个方法调用它,所以把下拉菜单定义了单子模式,这样通过类方法就能在任意地方调用并销毁它。微信的右上角下拉菜单在弹出的时候,点击顶部导航栏和底部标签栏,都不会使下拉菜单消失,并且可以通过底部标签栏来切换界面,这个下拉菜单的view应该就是在当前界面的view里边添加的,并且可以动态根据屏幕方向移动很好的适配,难道是加了代码自动布局?可能是吧,这个适配这里做应该会很麻烦吧,以后可能会遇到,有时间还是会想想怎么去优化这个。看了下代码,逻辑并没有多清晰,很多地方都是比较繁琐和重复,感觉自己代码上还是比较弱,希望会越来越好吧。

项目主页:http://www.open-open.com/lib/view/home/1440421921341