1. 程式人生 > >下拉選擇選單封裝

下拉選擇選單封裝

http://blog.csdn.net/u012701023/article/details/51778657

  1. //
  2. //  OrderListDownMenu.h
  3. #import <UIKit/UIKit.h>
  4. @protocol OrderListDownMenuDelegate <NSObject>  
  5. - (void)OrderListDownMenu:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;  
  6. @end
  7. typedefvoid(^Dismiss)(void);  
  8. @interface
     OrderListDownMenu : UIView<UITableViewDataSource, UITableViewDelegate>  
  9. @property (nonatomicstrongUITableView *tableView;  
  10. @property (nonatomic, assign) id<OrderListDownMenuDelegate> delegate;  
  11. @property (nonatomicstrongNSArray *arrData;  
  12. @property (nonatomicstrongNSArray *arrImgName;  
  13. @property (nonatomiccopy) Dismiss dismiss;  
  14. - (instancetype)initWithDataArr:(NSArray *)dataArr origin:(CGPoint)origin width:(CGFloat)width rowHeight:(CGFloat)rowHeight;  
  15. - (void)dismissWithCompletion:(void (^)(OrderListDownMenu *object))completion;  
  16. @end
  1. #import "OrderListDownMenu.h"
  2. #define TopToView 63.0f
  3. #define rightToView kScreenWidth - 15.0f
  4. #define LeftToView kScreenWidth - 145.0 - 10.0f
  5. #define CellLineEdgeInsets UIEdgeInsetsMake(0, -80, 0, 0)
  6. #define kScreenWidth        [UIScreen mainScreen].bounds.size.width
  7. #define kScreenHeight        [UIScreen mainScreen].bounds.size.height
  8. @interface OrderListDownMenu()  
  9. @property (nonatomic, assign) CGPoint origin;  
  10. @property (nonatomic, assign) CGFloat rowHeight;  
  11. @end
  12. @implementation OrderListDownMenu  
  13. - (instancetype)initWithDataArr:(NSArray *)dataArr origin:(CGPoint)origin width:(CGFloat)width rowHeight:(CGFloat)rowHeight {  
  14.     self = [super initWithFrame:CGRectMake(00, kScreenWidth, kScreenHeight)];  
  15.     if (self) {  
  16.         if (rowHeight <= 0) {  
  17.             rowHeight = 50;  
  18.         }  
  19.         // 設定背景顏色
  20.         self.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.2];  
  21.         self.origin = origin;  
  22.         self.rowHeight = rowHeight;  
  23.         self.arrData = [dataArr copy];  
  24.         self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(origin.x + LeftToView, origin.y + TopToView, width, rowHeight * dataArr.count) style:UITableViewStylePlain];  
  25.         _tableView.dataSource = self;  
  26.         _tableView.delegate = self;  
  27.         [self addSubview:_tableView];  
  28.         _tableView.backgroundColor = [UIColor whiteColor];  
  29.         _tableView.layer.cornerRadius = 2;  
  30.         _tableView.bounces = NO;  
  31.         _tableView.layer.cornerRadius = 8;  
  32.         _tableView.separatorColor = [UIColor colorWithWhite:0.3 alpha:1];  
  33.         _tableView.separatorStyle = UITableViewCellSelectionStyleNone;  
  34.         [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];  
  35.         if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {  
  36.             [self.tableView setSeparatorInset:CellLineEdgeInsets];  
  37.         }  
  38.         if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {  
  39.             [self.tableView setLayoutMargins:CellLineEdgeInsets];  
  40.         }  
  41.     }  
  42.     returnself;  
  43. }  
  44. - (void)layoutSubviews {  
  45.     [super layoutSubviews];  
  46. }  
  47. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {  
  48.     returnself.arrData.count;  
  49. }  
  50. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {  
  51.     returnself.rowHeight;  
  52. }  
  53. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {  
  54.     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];  
  55.     cell.textLabel.textColor = THEME_COLOR_GRAY_1;  
  56.     cell.textLabel.font = [UIFont systemFontOfSize:15];  
  57.     cell.textLabel.text = self.arrData[indexPath.row];  
  58.     if (self.arrImgName.count > indexPath.row) {  
  59.         cell.imageView.image = [UIImage imageNamed:self.arrImgName[indexPath.row]];  
  60.         cell.imageView.contentMode = UIViewContentModeScaleAspectFit;  
  61.     }  
  62.     UILabel *label = [[UILabel alloc] init];  
  63.     label.frame = CGRectMake(049, _tableView.frame.size.width0.5);  
  64.     label.backgroundColor = THEME_SEPARATOR_COLOR;  
  65.     [cell.contentView addSubview:label];  
  66.     return cell;  
  67. }  
  68. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {  
  69.     if([self.delegate respondsToSelector:@selector(OrderListDownMenu:didSelectRowAtIndexPath:)]){  
  70.         [self.delegate OrderListDownMenu:tableView didSelectRowAtIndexPath:indexPath];  
  71.     }  
  72.     [tableView deselectRowAtIndexPath:indexPath animated:YES];  
  73.     [self dismissWithCompletion:nil];  
  74. }  
  75. - (void)dismissWithCompletion:(void (^)(OrderListDownMenu *object))completion {  
  76.     __weak __typeof(self) weakSelf = self;  
  77.     [UIView animateWithDuration:0.2 animations:^{  
  78.         weakSelf.alpha = 0;  
  79.         weakSelf.tableView.frame = CGRectMake(weakSelf.origin.x + LeftToView + 145, weakSelf.origin.y + TopToView, 00);  
  80.     } completion:^(BOOL finished) {  
  81.         [weakSelf removeFromSuperview];  
  82.         if (completion) {  
  83.             completion(weakSelf);  
  84.         }  
  85.         if (weakSelf.dismiss) {  
  86.             weakSelf.dismiss();  
  87.         }  
  88.     }];  
  89. }  
  90. - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {  
  91.     UITouch *touch = [touches anyObject];  
  92.     if (![touch.view isEqual:self.tableView]) {  
  93.         [self dismissWithCompletion:nil];  
  94.     }  
  95. }  
  96. - (void)drawRect:(CGRect)rect {  
  97.     //[colors[serie] setFill];
  98.     //拿到當前檢視準備好的畫板
  99.     CGContextRef context = UIGraphicsGetCurrentContext();  
  100.     //利用path進行繪製三角形
  101.     CGContextBeginPath(context);//標記
  102.     CGContextMoveToPoint(context,  
  103.                          rightToView - 1353);//設定起點
  104.     CGContextAddLineToPoint(context,  
  105.                             rightToView - 21, TopToView);  
  106.     CGContextAddLineToPoint(context,  
  107.                             rightToView - 4, TopToView);  
  108.     CGContextClosePath(context);//路徑結束標誌,不寫預設封閉
  109.     [self.tableView.backgroundColor setFill]; //設定填充色
  110.     [self.tableView.backgroundColor setStroke]; //設定邊框顏色
  111.     CGContextDrawPath(context,  
  112.                       kCGPathFillStroke);//繪製路徑path
  113. }  
  114. @end

相關推薦

選擇選單封裝

http://blog.csdn.net/u012701023/article/details/51778657 ////  OrderListDownMenu.h#import <UIKit/UIKit.h>@protocol OrderListDow

基於angularjs的選擇封裝

一:UI產品互動圖   二:實現包括的功能點 1:下拉框內容是表格,類似於一個彈窗 表格內容最多六行,超出的顯示滾動條,表頭固定。 支援鍵盤上下鍵,進行當前項的選擇 支援鍵盤的enter選擇鍵,並支援回撥函式,進行頁面的資料繫結 支援載入後臺資料 支援繫結指令的inpu

JQ的幾種選擇選單的取得方式

var a1 = $('input:radio[name=a1]:checked').val(); 選擇 var rolejob4 = $("#rolejob4").find("option:selected").text(); 下拉 $("#rolename5").va

JSP自定義標籤(一) 樹形選擇選單

<tag>       <name>selector</name>       <tag-class>com.moonNigh.tagSupport.SelectorTag</tag-class>       <body-content&

android彈出選擇選單,單選,多選

選單選擇視窗: 選單多選視窗 選單單選視窗: [java] view plaincopyprint? import android.app.Activity; import android.app.AlertDialog; import android.c

Vue Treeselect樹實現,選擇部門樹,選單

先來看一張最基本的效果圖: 介紹 具有巢狀選項支援的單個和多個選擇 模糊匹配 非同步搜尋 延遲載入(僅在需要時載入深層選項的資料) 鍵盤支援(使用Arrow Up&Arrow Down鍵導航,使用鍵選擇選項Enter等) 豐富的選項和高度可定製 支

如何設定Select選擇框(選單)的樣式

  增加CSS樣式: <style type="text/css">.select{border:1px #004080 solid;float: left;}.select div{border:1px #efefef solid;float: left;}.s

基於jquery封裝的顏色選擇

應同事要求,花了半個小時,寫了一個簡單的選擇顏色的下拉框控制元件,可以控制輸入框指示結果顏色 也貼出來,說不定哪天有用 if (typeof jQuery === 'undefined') { throw 'no jquery'; } (function () {

jquery封裝樹形選擇元件

style樣式:.treeBox{width: 400px; border: 1px solid black; margin: 0px auto; text-align: center; padding:

Select選擇

tex max 下拉選擇框 query move size nbsp 獲取 位置 var checkText=$("#select_id").find("option:selected").text(); //獲取Select選擇的Text var checkVal

jeecg3.7中DictSelect數據字典選擇框的用法

clas name vcl val title tco sql 文本 sel 1、參數 屬性名 類型 描述

微信小程序的按擡起事件,選擇框的事件及點擊確定的方法函數,獲取時間的方法,省市區的方法。

bin img util req fun data hang UNC 日期 擡起按下的事件: 擡起事件: bind:touchstart="nanOne" 把這條屬性放到標簽裏就可以了 在JS中 nanOne: function () {     this.setDa

django前端頁面選擇框預設值設定

1,前端樣式 2,前端html程式碼 <select name="row.status"> <option value="ON" {% if row.status == 'ON' %} selected="selected" {% endif %}>

select選擇框實現迴圈遍歷資料庫

  <select class="form-control input-medium" id="organ"> <option value="">所屬部門</option> <c:forEach var="organ"

UI標籤庫專題十一 JEECG智慧開發平臺 DictSelect 資料字典選擇

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

HTML選擇 簡單例項 新增刪除節點到另一個節點

 下拉選擇 簡單例項   <html> <head> <title>HTML</title> <style type="text/css"> </style> </h

JS:使用c:forEach實現選擇

思路 後臺生成xxlist,新增到model中 使用c:forEach將list中的xx迴圈出來,放到每一個option中 程式碼 <div class="form-group"> <label class="col-sm

select2 智能補全模糊查詢select2的選擇框使用

bootstrap csdn 下拉選擇 們的 應用 圖片 文章 jsp 模糊查詢    我們在上篇文章中已經在SpringMVC基礎框架的基礎上應用了BootStrap的後臺框架,在此基礎上記錄select2的使用。 應用bootstrap模板 基礎項目源碼下載地址為:

layui框js封裝

/** * 初始化返回資料型別下拉框 * @param comboboxId 下拉框ID * @param param 自定義sql要傳入的引數,例如 {cfgCode:'ENUM_GETTER',enumCategoryId:enumCategoryId} 其中cfgCode為必傳引數 *

react native 選擇

<ModalDropdown options={type} //下拉內容陣列 style={styles.modal} //按鈕樣式 dropdownStyle={[styles.dropdown,{height:32*type.length}]} /