亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

下拉框選擇效果的實現原理2

2019-11-14 18:33:52
字體:
來源:轉載
供稿:網友

效果如下

原理:使用第三方XTSegmentControl作為上面選項卡的實現,而彈出視圖則是滾動視圖跟每一行里面的UIBUTTON結合打勾圖標相結合的實現方式;源代碼可以下載開源項目Coding.net里的任務模塊;這邊將分簡單的貼出其主要的代碼

1:首先是主頁面的代碼:

        // 添加滑塊 分三組        _one = @[@"全部討論", @"我的討論"];        _two = [NSMutableArray arrayWithObjects:@"全部標簽", nil];        _three = @[@"最后評論排序", @"發布時間排序", @"熱門排序"];        _total = @[_one, _two, _three];                //用于每一組每個的數字        _oneNumber = [NSMutableArray arrayWithObjects:@0, @0, nil];        _twoNumber = [NSMutableArray arrayWithObjects:@0, nil];        _totalIndex = [NSMutableArray arrayWithObjects:@0, @0, @0, nil];        __weak typeof(self) weakSelf = self;                //選項卡的初始化        self.mySegmentControl = [[XTSegmentControl alloc] initWithFrame:CGRectMake(0, 0, kScreen_Width, kMySegmentControl_Height)                                                                  Items:@[_one[0], _two[0], _three[0]]                                                               withIcon:YES                                                          selectedBlock:^(NSInteger index) {                                                              //選中哪一組                                                              [weakSelf openList:index];                                                          }];        [self addSubview:self.mySegmentControl];
- (void)openList:(NSInteger)segmentIndex{    TopicListView *lView = (TopicListView *)[self viewWithTag:9898];        //當前是否存在    if (!lView) {        // 不存在則顯示        _segIndex = segmentIndex;        NSArray *lists = (NSArray *)_total[segmentIndex];        CGRect rect = CGRectMake(0, kMySegmentControl_Height, kScreen_Width, self.frame.size.height - kMySegmentControl_Height);        NSArray *nAry = nil;        if (segmentIndex == 0) {            nAry = _oneNumber;        } else if (segmentIndex == 1 && [_totalIndex[0] integerValue] == 0) {            nAry = _twoNumber;        }        __weak typeof(self) weakSelf = self;        TopicListView *listView = [[TopicListView alloc]initWithFrame:rect                                                                titles:lists                                                               numbers:nAry                                                          defaultIndex:[_totalIndex[segmentIndex] integerValue]                                                         selectedBlock:^(NSInteger index) {                                                             [weakSelf changeIndex:index withSegmentIndex:segmentIndex];                                                         }                                                             hideBlock:^() {                                                             [weakSelf.mySegmentControl selectIndex:-1];                                                         }];        listView.tag = 9898;        [self addSubview:listView];        [listView showBtnView];    } else if (_segIndex != segmentIndex) {        // 說明前面已經顯示 選中另外一個 另展示        _segIndex = segmentIndex;                NSArray *nAry = nil;                //因為第三組是沒有數字的        //被選中第一個數字        if (segmentIndex == 0) {            nAry = _oneNumber;        } else if (segmentIndex == 1 && [_totalIndex[0] integerValue] == 0) {            //被選中第二個數字            nAry = _twoNumber;        }                //獲得是哪一組        NSArray *lists = (NSArray *)_total[segmentIndex];        __weak typeof(self) weakSelf = self;        [lView changeWithTitles:lists                        numbers:nAry                   defaultIndex:[_totalIndex[segmentIndex] integerValue]                  selectedBlock:^(NSInteger index) {                       [weakSelf changeIndex:index withSegmentIndex:segmentIndex];                   }                      hideBlock:^() {                          [weakSelf.mySegmentControl selectIndex:-1];                      }];    } else {        // 隱藏        [lView hideBtnView];    }}

其中openList為選中某一選項卡時,彈出相應的視圖內容;

2:橫向選項卡的主要內容:

- (void)initItemsWithTitleArray:(NSArray *)titleArray withIcon:(BOOL)isIcon{    _itemFrames = @[].mutableCopy;    _items = @[].mutableCopy;    float y = 0;    float height = CGRectGetHeight(self.bounds);    NSObject *obj = [titleArray firstObject];    if ([obj isKindOfClass:[NSString class]]) {        for (int i = 0; i < titleArray.count; i++) {            float x = i > 0 ? CGRectGetMaxX([_itemFrames[i-1] CGRectValue]) : 0;            float width = kScreen_Width/titleArray.count;            CGRect rect = CGRectMake(x, y, width, height);            [_itemFrames addObject:[NSValue valueWithCGRect:rect]];        }                for (int i = 0; i < titleArray.count; i++) {            CGRect rect = [_itemFrames[i] CGRectValue];            NSString *title = titleArray[i];            XTSegmentControlItem *item = [[XTSegmentControlItem alloc] initWithFrame:rect title:title type: isIcon ?                                                                                   XTSegmentControlItemTypeTitleAndIcon : XTSegmentControlItemTypeTitle];            if (!isIcon && i == 0) {                [item setSelected:YES];            }            [_items addObject:item];            [_contentView addSubview:item];        }    } else if ([obj isKindOfClass:[PRojectMember class]] || [obj isKindOfClass:[Project class]]) {//        全部任務的frame        CGRect firstFrame = CGRectMake(5.0, 0, XTSegmentControlIconWidth, height);        [_itemFrames addObject:[NSValue valueWithCGRect:firstFrame]];        for (int i = 1; i < titleArray.count; i++) {            float x = CGRectGetMaxX([_itemFrames[i-1] CGRectValue]);            CGRect rect = CGRectMake(x, y, XTSegmentControlIconWidth, height);            [_itemFrames addObject:[NSValue valueWithCGRect:rect]];        }                for (int i = 0; i < titleArray.count; i++) {            CGRect rect = [_itemFrames[i] CGRectValue];            XTSegmentControlItem *item;            if ([obj isKindOfClass:[ProjectMember class]]) {                ProjectMember *title = titleArray[i];                item = [[XTSegmentControlItem alloc] initWithFrame:rect title:title.user.avatar type:XTSegmentControlItemTypeIconUrl];            } else if ([obj isKindOfClass:[Project class]]){                Project *title = titleArray[i];                item = [[XTSegmentControlItem alloc] initWithFrame:rect title:title.icon type:XTSegmentControlItemTypeIconUrl];            }            if (item) {                if (i == 0) {                    [item setSelected:YES];                }                [_items addObject:item];                [_contentView addSubview:item];            }        }    }        [_contentView setContentSize:CGSizeMake(CGRectGetMaxX([[_itemFrames lastObject] CGRectValue]), CGRectGetHeight(self.bounds))];    self.currentIndex = 0;    [self selectIndex:0];    if (isIcon) {        //是否有右邊的那條線        [self selectIndex:-1];        for (int i=1; i<_itemFrames.count; i++) {            CGRect rect = [_itemFrames[i] CGRectValue];                        UIView *lineView  = [[UIView alloc] initWithFrame:CGRectMake(                                                                         CGRectGetMinX(rect),                                                                         (CGRectGetHeight(rect) - 14) * 0.5,                                                                         1,                                                                         14)];            lineView.backgroundColor = [UIColor colorWithHexString:@"0xdddddd"];            [self addSubview:lineView];        }    }}- (void)addRedLine{    if (!_lineView) {        CGRect rect = [_itemFrames[0] CGRectValue];        _lineView = [[UIView alloc] initWithFrame:CGRectMake(                                                             CGRectGetMinX(rect),                                                             CGRectGetHeight(rect) - XTSegmentControlLineHeight,                                                             CGRectGetWidth(rect) - 2 * XTSegmentControlHspace,                                                             XTSegmentControlLineHeight)];        _lineView.backgroundColor = [UIColor colorWithHexString:@"0x3bbd79"];        [_contentView addSubview:_lineView];               UIView *bottomLineView = [[UIView alloc] initWithFrame:CGRectMake(0, CGRectGetHeight(rect)-0.5, CGRectGetWidth(self.bounds), 0.5)];        bottomLineView.backgroundColor = [UIColor colorWithHexString:@"0xc8c7cc"];        [self addSubview:bottomLineView];    }}- (void)setTitle:(NSString *)title withIndex:(NSInteger)index{    XTSegmentControlItem *curItem = [_items objectAtIndex:index];    [curItem resetTitle:title];}

3:橫向選項卡中每一個選項的代碼如下:

#define XTSegmentControlItemFont (15)#define XTSegmentControlHspace (0)#define XTSegmentControlLineHeight (2)#define XTSegmentControlAnimationTime (0.3)#define XTSegmentControlIconWidth (50.0)#define XTSegmentControlIconSpace (4)typedef NS_ENUM(NSInteger, XTSegmentControlItemType){    XTSegmentControlItemTypeTitle = 0,    XTSegmentControlItemTypeIconUrl,    XTSegmentControlItemTypeTitleAndIcon,};@interface XTSegmentControlItem : UIView@property (nonatomic, strong) UILabel *titleLabel;@property (nonatomic, strong) UIImageView *titleIconView;@property (nonatomic, assign) XTSegmentControlItemType type;- (void)setSelected:(BOOL)selected;@end@implementation XTSegmentControlItem- (id)initWithFrame:(CGRect)frame title:(NSString *)title type:(XTSegmentControlItemType)type{    if (self = [super initWithFrame:frame]) {        self.backgroundColor = [UIColor clearColor];        _type = type;        switch (_type) {            case XTSegmentControlItemTypeIconUrl:            {                _titleIconView = [[UIImageView alloc] initWithFrame:CGRectMake((CGRectGetWidth(self.bounds)-40)/2, (CGRectGetHeight(self.bounds)-40)/2, 40, 40)];                [_titleIconView doCircleFrame];                if (title) {                    [_titleIconView sd_setImageWithURL:[title urlImageWithCodePathResizeToView:_titleIconView] placeholderImage:kPlaceholderMonkeyRoundView(_titleIconView)];                }else{                    [_titleIconView setImage:[UIImage imageNamed:@"tasks_all"]];                }                [self addSubview:_titleIconView];            }                break;            case XTSegmentControlItemTypeTitleAndIcon:            {                _titleLabel = ({                    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds))];                                        label.font = [UIFont systemFontOfSize:(kDevice_Is_iphone6Plus) ? (XTSegmentControlItemFont + 1) : (kDevice_Is_iPhone6 ? XTSegmentControlItemFont : XTSegmentControlItemFont - 2)];                    label.textAlignment = NSTextAlignmentCenter;                    label.text = title;                    label.textColor = [UIColor colorWithHexString:@"0x222222"];                    label.backgroundColor = [UIColor clearColor];                    [label sizeToFit];                    if (label.frame.size.width > CGRectGetWidth(self.bounds) - XTSegmentControlIconSpace - 10) {                        CGRect frame = label.frame;                        frame.size.width = CGRectGetWidth(self.bounds) - XTSegmentControlIconSpace - 10;                        label.frame = frame;                    }                    label.center = CGPointMake((CGRectGetWidth(self.bounds) - XTSegmentControlIconSpace - 10) * 0.5, CGRectGetHeight(self.bounds) * 0.5);                    label;                });                                [self addSubview:_titleLabel];                                CGFloat x = CGRectGetMaxX(_titleLabel.frame) + XTSegmentControlIconSpace;                _titleIconView = [[UIImageView alloc] initWithFrame:CGRectMake(x, (CGRectGetHeight(self.bounds) - 10) * 0.5, 10, 10)];                [_titleIconView setImage:[UIImage imageNamed:@"tag_list_up"]];                [self addSubview:_titleIconView];            }                break;            case XTSegmentControlItemTypeTitle:            default:            {                _titleLabel = ({                    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(XTSegmentControlHspace, 0, CGRectGetWidth(self.bounds) - 2 * XTSegmentControlHspace, CGRectGetHeight(self.bounds))];                    label.font = [UIFont systemFontOfSize:XTSegmentControlItemFont];                    label.textAlignment = NSTextAlignmentCenter;                    label.text = title;                    label.textColor = [UIColor colorWithHexString:@"0x222222"];                    label.backgroundColor = [UIColor clearColor];                    label;                });                                                [self addSubview:_titleLabel];            }                break;        }    }    return self;}- (void)setSelected:(BOOL)selected{    switch (_type) {        case XTSegmentControlItemTypeIconUrl:        {        }            break;        case XTSegmentControlItemTypeTitleAndIcon:        {            if (_titleLabel) {                [_titleLabel setTextColor:(selected ? [UIColor colorWithHexString:@"0x3bbd79"]:[UIColor colorWithHexString:@"0x222222"])];            }            if (_titleIconView) {                [_titleIconView setImage:[UIImage imageNamed: selected ? @"tag_list_down" : @"tag_list_up"]];            }        }            break;        default:        {            if (_titleLabel) {                [_titleLabel setTextColor:(selected ? [UIColor colorWithHexString:@"0x3bbd79"]:[UIColor colorWithHexString:@"0x222222"])];            }        }            break;    }}- (void)resetTitle:(NSString *)title{    if (_titleLabel) {        _titleLabel.text = title;    }    if (_type == XTSegmentControlItemTypeTitleAndIcon) {        [_titleLabel sizeToFit];        if (_titleLabel.frame.size.width > CGRectGetWidth(self.bounds) - XTSegmentControlIconSpace - 10) {            CGRect frame = _titleLabel.frame;            frame.size.width = CGRectGetWidth(self.bounds) - XTSegmentControlIconSpace - 10;            _titleLabel.frame = frame;        }        _titleLabel.center = CGPointMake((CGRectGetWidth(self.bounds) - XTSegmentControlIconSpace - 10) * 0.5, CGRectGetHeight(self.bounds) * 0.5);            CGRect frame = _titleIconView.frame;        frame.origin.x = CGRectGetMaxX(_titleLabel.frame) + XTSegmentControlIconSpace;        _titleIconView.frame = frame;    }}@end

注意:這邊創建的選項的布局,及選中時做出來的效果變化

4:彈出視圖的內容TopicListView

#import <UIKit/UIKit.h>typedef void(^TopicListViewBlock)(NSInteger index);typedef void(^TopicListViewHideBlock)();@interface TopicListView : UIView- (id)initWithFrame:(CGRect)frame             titles:(NSArray *)titles            numbers:(NSArray *)numbers       defaultIndex:(NSInteger)index      selectedBlock:(TopicListViewBlock)selectedHandle          hideBlock:(TopicListViewHideBlock)hideHandle;- (void)changeWithTitles:(NSArray *)titles                 numbers:(NSArray *)numbers            defaultIndex:(NSInteger)index           selectedBlock:(TopicListViewBlock)selectedHandle               hideBlock:(TopicListViewHideBlock)hideHandle;- (void)showBtnView;- (void)hideBtnView;@end
#import "TopicListView.h"#import "TopicListButton.h"@interface TopicListView (){    UIScrollView *_baseView;    UIButton *_baseBtn;    NSInteger _count;    NSInteger _index;}@property (nonatomic , copy) TopicListViewBlock block;@property (nonatomic , copy) TopicListViewHideBlock hideBlock;@end@implementation TopicListView- (id)initWithFrame:(CGRect)frame             titles:(NSArray *)titles            numbers:(NSArray *)numbers       defaultIndex:(NSInteger)index      selectedBlock:(TopicListViewBlock)selectedHandle          hideBlock:(TopicListViewHideBlock)hideHandle{    self = [super initWithFrame:frame];    if (self) {        self.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.4];        //回調事件的賦值        self.block = selectedHandle;        self.hideBlock = hideHandle;        self.clipsToBounds = YES;                //—_baseBtn是產生后面的背景陰影        _baseBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, kScreen_Width, self.frame.size.height)];        _baseBtn.backgroundColor = [UIColor clearColor];        [_baseBtn addTarget:self action:@selector(baseBtnClick) forControlEvents:UIControlEventTouchUpInside];        [self addSubview:_baseBtn];                _index = index;        _count = titles.count;        CGFloat h = _count * kMySegmentControl_Height;        CGFloat sH = h;        if (h + kMySegmentControl_Height > self.frame.size.height) {            sH = self.frame.size.height - kMySegmentControl_Height;        }        //_baseView則是下拉的列表        _baseView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, -sH, kScreen_Width, sH)];        [self addSubview:_baseView];        _baseView.contentSize = CGSizeMake(kScreen_Width, h);        _baseView.bounces = FALSE;        //btnView則是在滾動視圖_baseView里面,用于存放按鍵的容器        UIView *btnView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreen_Width, h)];        btnView.backgroundColor = [UIColor whiteColor];        [_baseView addSubview:btnView];                //遍歷產生按鍵,并判斷是否被選擇        for (int i=0; i<titles.count; i++) {            NSString *title = titles[i];            TopicListButton *btn;            if (numbers) {                btn = [TopicListButton buttonWithTitle:title andNumber:[numbers[i] integerValue]];            } else {                btn = [TopicListButton buttonWithTitle:title];            }            CGRect frame = btn.frame;            frame.origin.y = i * kMySegmentControl_Height;            btn.frame = frame;            btn.tag = 1000 + i;            [btn setIconHide:(_index == i ? FALSE : TRUE)];            [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];            [btnView addSubview:btn];        }    }    return self;}- (void)changeWithTitles:(NSArray *)titles                 numbers:(NSArray *)numbers            defaultIndex:(NSInteger)index           selectedBlock:(TopicListViewBlock)selectedHandle               hideBlock:(TopicListViewHideBlock)hideHandle{    self.block = selectedHandle;    self.hideBlock = hideHandle;       CGRect frame = _baseView.frame;    frame.origin.y = -frame.size.height;    [UIView animateWithDuration:0.2 delay:0.0 options:UIViewAnimationOptionCurveLinear animations:^{        _baseView.frame = frame;    } completion:^(BOOL finished) {        [_baseView removeFromSuperview];                _index = index;        _count = titles.count;        CGFloat h = _count * kMySegmentControl_Height;        CGFloat sH = h;        if (h + kMySegmentControl_Height > self.frame.size.height) {            sH = self.frame.size.height - kMySegmentControl_Height;        }        _baseView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, -sH, kScreen_Width, sH)];        [self addSubview:_baseView];        _baseView.contentSize = CGSizeMake(kScreen_Width, h);        _baseView.bounces = FALSE;                UIView *btnView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreen_Width, h)];        btnView.backgroundColor = [UIColor whiteColor];        [_baseView addSubview:btnView];                for (int i=0; i<titles.count; i++) {            NSString *title = titles[i];            TopicListButton *btn;            if (numbers) {                btn = [TopicListButton buttonWithTitle:title andNumber:[numbers[i] integerValue]];            } else {                btn = [TopicListButton buttonWithTitle:title];            }            CGRect frame = btn.frame;            frame.origin.y = i * kMySegmentControl_Height;            btn.frame = frame;            btn.tag = 1000 + i;            [btn setIconHide:(_index == i ? FALSE : TRUE)];            [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];           [btnView addSubview:btn];        }                [self showBtnView];    }];}//顯示下拉列表- (void)showBtnView{    CGRect frame = _baseView.frame;    frame.origin.y = 0;    [UIView animateWithDuration:0.3 animations:^{        _baseView.frame = frame;    } completion:^(BOOL finished) {    }];}//隱藏回縮事件- (void)hideBtnView{    CGRect frame = _baseView.frame;    frame.origin.y = -frame.size.height;    [UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionCurveLinear animations:^{        _baseView.frame = frame;    } completion:^(BOOL finished) {        if (self.hideBlock) {            self.hideBlock();        }        [UIView animateWithDuration:0.2 animations:^{            self.alpha = 0;        } completion:^(BOOL finished) {            [self removeFromSuperview];        }];    }];}- (void)baseBtnClick{    [self hideBtnView];}//按鍵響應的事件 用TAG進行遍歷選取 更新選中跟不選中的狀態- (void)btnClick:(TopicListButton *)sender{    //用TAG進行遍歷選取 更新選中跟不選中的狀態    for (int i=1000; i<_count + 1000; i++) {        TopicListButton *btn = (TopicListButton *)[_baseView viewWithTag:i];        [btn setIconHide:(sender.tag == i ? FALSE : TRUE)];    }    //如果當前被選中的跟前面的索引值不一樣說明已經發生變化 則回傳回去    if (_index!=sender.tag - 1000 && self.block) {        self.block(sender.tag - 1000);    }    //隱藏下拉列表    [self hideBtnView];}@end

這邊的代碼是彈出窗的主要實現代碼,以后其它功能也可以參考,包括對視圖的顯示跟隱藏,按鍵的增加跟事件創建等,背景視圖的創建;

5:彈出項的TopicListButton主要代碼

#import <UIKit/UIKit.h>@interface TopicListButton : UIButton+ (instancetype)buttonWithTitle:(NSString *)title andNumber:(NSInteger)number;+ (instancetype)buttonWithTitle:(NSString *)title;- (void)setIconHide:(BOOL)hide;@end
#import "TopicListButton.h"@interface TopicListButton (){    UILabel *_titleLbl;    UIImageView *_iconImg;}@end@implementation TopicListButton- (instancetype)initWithFrame:(CGRect)frame{    self = [super initWithFrame:frame];    if (self) {        //左邊的文字        _titleLbl = [[UILabel alloc] initWithFrame:CGRectMake(kPaddingLeftWidth, 0, kScreen_Width - kPaddingLeftWidth - 20, kMySegmentControl_Height)];        _titleLbl.font = [UIFont systemFontOfSize:16];        _titleLbl.textColor = [UIColor colorWithHexString:@"0x666666"];        [self addSubview:_titleLbl];                //右邊的打勾圖片        _iconImg = [[UIImageView alloc] initWithFrame:CGRectMake(kScreen_Width - kPaddingLeftWidth - 18, (kMySegmentControl_Height - 18) * 0.5, 18, 18)];        [_iconImg setImage:[UIImage imageNamed:@"tag_list_s"]];        [self addSubview:_iconImg];                //下劃線的實現        UIView *bottomLineView = [[UIView alloc] initWithFrame:CGRectMake(kPaddingLeftWidth, kMySegmentControl_Height - 0.6, kScreen_Width - kPaddingLeftWidth, 0.6)];        bottomLineView.backgroundColor = [UIColor colorWithHexString:@"0xdddddd"];        [self addSubview:bottomLineView];    }    return self;}//此方法是用于實現帶有數字+ (instancetype)buttonWithTitle:(NSString *)title andNumber:(NSInteger)number{    TopicListButton *button = [[TopicListButton alloc] initWithFrame:CGRectMake(0, 0, kScreen_Width, kMySegmentControl_Height)];    [button setTitleLbl:[NSString stringWithFormat:@"%@(%ld)", title, (long)number]];    return button;}//此方法用于實現不帶數字+ (instancetype)buttonWithTitle:(NSString *)title{    TopicListButton *button = [[TopicListButton alloc] initWithFrame:CGRectMake(0, 0, kScreen_Width, kMySegmentControl_Height)];    [button setTitleLbl:title];    return button;}- (void)setTitleLbl:(NSString *)title{    _titleLbl.text = title;}//對于打勾圖片是否顯示進行控制- (void)setIconHide:(BOOL)hide{    _iconImg.hidden = hide;}@end

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91国偷自产一区二区三区的观看方式| 日韩美女主播视频| 国产成人精品在线播放| 亚洲一区中文字幕在线观看| 精品国内亚洲在观看18黄| 国产一区私人高清影院| 2019精品视频| 亚洲国产精品va在线观看黑人| 亚洲国产美女久久久久| 亚洲国产成人精品一区二区| 久久男人资源视频| 亚洲精品xxx| 色播久久人人爽人人爽人人片视av| 日韩电影在线观看免费| 亚洲男人第一av网站| 日本aⅴ大伊香蕉精品视频| xxav国产精品美女主播| 国产精品亚洲综合天堂夜夜| 欧美激情xxxx性bbbb| 久久全球大尺度高清视频| 欧美高清一级大片| 91九色在线视频| 黑人精品xxx一区| 久久久久久久一区二区| 亚洲自拍偷拍色图| 国产欧美一区二区白浆黑人| 欧美激情中文网| 色综合久久悠悠| 国产精品成人免费电影| 日韩免费高清在线观看| 国产日产欧美a一级在线| 亚洲人成电影网站色www| 亚洲精品一区二区三区婷婷月| 亚洲欧洲在线免费| 91久久国产精品91久久性色| 日韩欧美国产一区二区| 亚洲伊人成综合成人网| 亚洲人成在线观看| 日韩欧美有码在线| 欧美中文在线字幕| 97久久精品在线| 色与欲影视天天看综合网| 欧美日韩一区二区免费在线观看| 在线观看欧美日韩| 国产v综合v亚洲欧美久久| 欧美日韩国产中字| 欧美国产日韩一区二区三区| 日韩国产精品亚洲а∨天堂免| 久久久久久国产| 亚洲免费av网址| 热久久视久久精品18亚洲精品| 最近2019中文字幕在线高清| 欧美成人在线影院| 亚洲第一精品久久忘忧草社区| 一区二区三欧美| 精品一区二区三区四区在线| 国模精品一区二区三区色天香| 亚洲色图第一页| 97国产成人精品视频| 欧美日韩亚洲一区二| 亚洲色在线视频| 国产精品嫩草影院一区二区| 一夜七次郎国产精品亚洲| 亚洲综合中文字幕在线| 亚洲在线免费观看| 日本成人免费在线| 日韩欧美在线网址| 亚洲成人网久久久| 中文字幕亚洲一区| 精品久久久久久亚洲国产300| 日韩中文字幕视频在线观看| 日韩国产在线播放| 这里只有精品在线播放| 91色p视频在线| 久久av资源网站| 97精品国产97久久久久久春色| 亚洲跨种族黑人xxx| 欧美怡红院视频一区二区三区| 日韩免费看的电影电视剧大全| 日本aⅴ大伊香蕉精品视频| 福利二区91精品bt7086| 久久精品久久久久电影| 日韩专区中文字幕| 亚洲女人初尝黑人巨大| 日韩精品在线免费播放| 欧美老女人性视频| 久久久久久亚洲精品中文字幕| 成人国产精品日本在线| 美日韩精品视频免费看| 国产精品自拍偷拍视频| 国产精品久久久久一区二区| www.久久草.com| 日韩美女写真福利在线观看| 国产成+人+综合+亚洲欧洲| 成人国产在线激情| 亚洲精品成人av| 日韩一级裸体免费视频| 亚洲一区二区三区777| 伊是香蕉大人久久| 亚洲成人激情视频| 国产精品电影在线观看| 欧美一性一乱一交一视频| 亚洲国产精品系列| xxxxxxxxx欧美| 国产视频亚洲视频| 国内偷自视频区视频综合| 欧美一区在线直播| 国产精品美女久久久久av超清| 日韩中文字幕在线播放| 国产精品一区av| 欧美午夜影院在线视频| 色一情一乱一区二区| 国产精品一区二区久久精品| 国产精品久久久久免费a∨| 欧美日韩在线另类| 国产免费观看久久黄| 欧美成人网在线| 久久久精品在线| 国产亚洲一区精品| 欧美电影在线观看| 亚洲国产97在线精品一区| 疯狂欧美牲乱大交777| 欧美视频不卡中文| 怡红院精品视频| 欧美成人网在线| 97在线看免费观看视频在线观看| 在线看片第一页欧美| 最新国产精品拍自在线播放| 国产成人亚洲精品| 国产在线视频2019最新视频| 国产精品欧美久久久| 国产成人精品综合久久久| 精品成人久久av| 国产成人精品在线观看| 亚洲a级在线观看| 国产精品视频色| 欧美一区二区视频97| 日本19禁啪啪免费观看www| 姬川优奈aav一区二区| 欧美人成在线视频| 久久人人爽人人爽人人片av高清| 国产一区二区三区在线免费观看| 久久久在线免费观看| 欧美xxxwww| 国产日韩视频在线观看| 日韩中文字幕在线播放| 国产精品美女www| 精品国产乱码久久久久酒店| 欧美精品18videos性欧| 亚洲自拍偷拍在线| 日韩成人小视频| 亚洲欧美国产精品va在线观看| 亚洲电影免费观看高清完整版在线观看| 日韩免费观看av| 黑人与娇小精品av专区| 国产成人精品久久二区二区| 免费不卡欧美自拍视频| 欧美在线激情网| 成人高h视频在线| 久久69精品久久久久久国产越南| 国产一区二区在线免费视频| 欧美性视频精品| 成人精品视频久久久久| 北条麻妃一区二区在线观看|