iOS DropDownMenu 模仿微博下拉菜單
iOS-DropDownMenu
iOS下拉菜單封裝,模仿微信和微博頂部和右側的局部下拉菜單效果
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里邊添加的,并且可以動態根據屏幕方向移動很好的適配,難道是加了代碼自動布局?可能是吧,這個適配這里做應該會很麻煩吧,以后可能會遇到,有時間還是會想想怎么去優化這個。看了下代碼,邏輯并沒有多清晰,很多地方都是比較繁瑣和重復,感覺自己代碼上還是比較弱,希望會越來越好吧。