iOS DropDownMenu 模仿微博下拉菜單

jopen 9年前發布 | 48K 次閱讀 IOS iOS開發 移動開發

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.baiduhome.net/lib/view/home/1440421921341

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!