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

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

iOS仿京東分類菜單實例實現

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

在APP開發過程中此功能還是比較常見的模塊,左邊為菜單展示,右邊為菜單下數據的展示,選擇不同的菜單右邊的數據源進行更新,此實例主要運用到UITableView,UICollectionView,OC謂詞一些知識,結合Masonry進行布局;實現的效果如下:

 

 

涉及的知識點:

1:UITableView的運用,包含選中與非選中行不同展示,默認行分隔線的色彩跟與左邊距離的調整,自動滾動到最頂端的實現等

2:UICollectionView的運用,包含單元格的加載,及重用時遇到的錯亂問題,記錄滾動位置的當前值;

3:數組的運用,包含運用謂詞對數組過濾

 

一:左邊表格單元行的實現內容

1.1 左邊單元行的數據實體,(注意:offsetScorller是為了后面記錄右邊數據的滾動位置值)

#import <Foundation/Foundation.h>@interface leftTagModel : NSObject//ID值@PRoperty(assign,nonatomic)long tagID;//名稱@property(copy,nonatomic)NSString *tagName;//圖標地址(為后期可能帶圖標做準備)@property(copy,nonatomic)NSString *tagImageUrl;//這個來定位右邊數據源滾動的位置@property(assign,nonatomic) float offsetScorller;@end

1.2左邊單元行的創建(注意:關于行的背影色以及字體顯示色彩的修改)

#import <UIKit/UIKit.h>#import "leftTagModel.h"@interface leftTableCell : UITableViewCell@property(strong,nonatomic)leftTagModel *curLeftTagModel;//是否被選中@property(assign,nonatomic)BOOL hasBeenSelected;@end
#import "leftTableCell.h"@interface leftTableCell()@property(strong,nonatomic)UIView *leftColorView;@property(strong,nonatomic)UILabel *nameLabel;@end//左邊色彩條寬度static const CGFloat leftColorViewWidth=3;//文字字體大小static const CGFloat textFontSize=15;@implementation leftTableCell- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];    if (self) {        //設置背影色        self.backgroundColor=[UIColor grayColor];        self.accessoryType = UITableViewCellAccessoryNone;                if (self.leftColorView==nil) {            self.leftColorView=[[UIView alloc]init];            self.leftColorView.backgroundColor=[UIColor blueColor];            self.leftColorView.hidden=YES;            [self.contentView addSubview:self.leftColorView];            [self.leftColorView mas_makeConstraints:^(MASConstraintMaker *make) {                make.left.mas_equalTo(self.contentView.mas_left).with.offset(0);                make.top.mas_equalTo(self.contentView.mas_top).with.offset(0);                make.bottom.mas_equalTo(self.contentView.mas_bottom).with.offset(0);                make.width.mas_equalTo(leftColorViewWidth);            }];        }                if (self.nameLabel==nil) {            self.nameLabel=[[UILabel alloc]init];            self.nameLabel.font=[UIFont systemFontOfSize:textFontSize];            self.nameLabel.textAlignment=NSTextAlignmentCenter;            [self.nameLabel sizeToFit];            [self.contentView addSubview:self.nameLabel];            [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) {                make.center.mas_equalTo(self.contentView);                make.height.mas_equalTo(@20);            }];        }    }    return self;}- (void)awakeFromNib {    // Initialization code}- (void)setSelected:(BOOL)selected animated:(BOOL)animated {    [super setSelected:selected animated:animated];    // Configure the view for the selected state}/** *  @author wujunyang, 15-10-10 14:10:52 * *  @brief  設置選中跟沒有選中的變化 * *  @param hasBeenSelected 是否被選中 * *  @since <#version number#> */-(void)setHasBeenSelected:(BOOL)hasBeenSelected{    _hasBeenSelected=hasBeenSelected;    if (_hasBeenSelected) {        self.backgroundColor=[UIColor whiteColor];        self.nameLabel.textColor=[UIColor greenColor];        self.leftColorView.hidden=NO;    }    else    {        self.backgroundColor=[UIColor grayColor];        self.nameLabel.textColor=[UIColor blackColor];        self.leftColorView.hidden=YES;    }}-(void)setCurLeftTagModel:(leftTagModel *)curLeftTagModel{    _curLeftTagModel=curLeftTagModel;    self.nameLabel.text=_curLeftTagModel.tagName;}@end

 

二:右邊列表的單元格實現

2.1右邊單元格實體(注意tagID是為跟左邊的數據源進行關聯)

#import <Foundation/Foundation.h>@interface noHeadRightModel : NSObject//實體leftTageModel中的主鍵值@property(assign,nonatomic)long tagID;@property(assign,nonatomic)long roomID;@property(copy,nonatomic)NSString *roomName;@property(copy,nonatomic)NSString *roomImageUrl;@end

2.2單元格的實現

#import <UIKit/UIKit.h>#import "noHeadRightModel.h"@interface rightCollectionViewCell : UICollectionViewCell@property(strong,nonatomic)noHeadRightModel *curNoHeadRightModel;+(CGSize)ccellSize;@end
#import "rightCollectionViewCell.h"@interface rightCollectionViewCell()@property(strong,nonatomic)UIImageView *roomImageView;@property(strong,nonatomic)UILabel *roomLabel;@endstatic const CGFloat collectionCellHeight=80;static const CGFloat labelHeight=20;@implementation rightCollectionViewCell//這邊很關鍵 CollectionViewCell重用- (id)initWithFrame:(CGRect)frame{    self = [super initWithFrame:frame];    if (self) {        if (self.roomImageView==nil) {            self.roomImageView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, ([UIScreen mainScreen].bounds.size.width-80-10*3)/3, collectionCellHeight-labelHeight)];            self.roomImageView.contentMode=UIViewContentModeScaleaspectFill;            self.roomImageView.clipsToBounds = YES;            self.roomImageView.layer.masksToBounds = YES;            self.roomImageView.layer.cornerRadius = 2.0;            [self.contentView addSubview:self.roomImageView];        }                if (self.roomLabel==nil) {            self.roomLabel=[[UILabel alloc]init];            self.roomLabel.font=[UIFont systemFontOfSize:15];            self.roomLabel.textAlignment=NSTextAlignmentCenter;            [self.roomLabel sizeToFit];            [self.contentView addSubview:self.roomLabel];            [self.roomLabel mas_makeConstraints:^(MASConstraintMaker *make) {                make.top.mas_equalTo(self.roomImageView.mas_bottom).with.offset(2);                make.centerX.mas_equalTo(self.roomImageView).with.offset(0);                make.height.mas_equalTo(labelHeight);            }];        }    }    return self;}-(void)setCurNoHeadRightModel:(noHeadRightModel *)curNoHeadRightModel{    _curNoHeadRightModel=curNoHeadRightModel;    self.roomImageView.image=[UIImage imageNamed:_curNoHeadRightModel.roomImageUrl];    self.roomLabel.text=_curNoHeadRightModel.roomName;}+(CGSize)ccellSize{    return CGSizeMake(([UIScreen mainScreen].bounds.size.width-80-10*3)/3,collectionCellHeight);}@end

注意:在集合UICollectionView重用單元一直出現錯亂,加載的數據有問題,是因為沒有把布局放在- (id)initWithFrame:(CGRect)frame導致;

 

三:主頁面的展示內容

3.1測試數據的構造跟左右兩控件的初始化

#import "menuTableViewController.h"#define kScreenWidth [UIScreen mainScreen].bounds.size.width#define kScreenHeight [UIScreen mainScreen].bounds.size.height@interface menuTableViewController ()<UITableViewDataSource, UITableViewDelegate,UICollectionViewDataSource, UICollectionViewDelegate>@property (strong, nonatomic) UITableView *myTableView;//左邊列表的數據源@property (nonatomic, strong) NSMutableArray *dataList;//右邊列表的過濾數據源@property(nonatomic,strong)NSMutableArray *rightdataList;//右邊列表數據源@property(nonatomic,strong)NSMutableArray *allRightDataList;//當前被選中的ID值@property(strong,nonatomic)leftTagModel *curSelectModel;//右邊列表@property (strong, nonatomic) UICollectionView *myCollectionView;//是否保持右邊滾動時位置@property(assign,nonatomic) BOOL isKeepScrollState;@property(assign,nonatomic) BOOL isReturnLastOffset;@property(assign,nonatomic) NSInteger selectIndex;@end//表格的寬度static const CGFloat tableWidthSize=80;//行的高度static const CGFloat tableCellHeight=44;//表格跟集合列表的空隙static const CGFloat leftMargin =10;@implementation menuTableViewController- (void)viewDidLoad {    [super viewDidLoad];        //初始化    self.view.backgroundColor=[UIColor whiteColor];    self.dataList=[[NSMutableArray alloc]init];    self.rightdataList=[[NSMutableArray alloc]init];    self.allRightDataList=[[NSMutableArray alloc]init];    self.isReturnLastOffset=YES;    //是否允許右位保持滾動位置    self.isKeepScrollState=YES;    //測試數據    for (int i=0; i<10; i++) {                //左邊列表數據        leftTagModel *item=[[leftTagModel alloc]init];        item.tagID=i;        item.tagName=[NSString stringWithFormat:@"第%d層",i];        [self.dataList addObject:item];                //右邊列表數據        for (int j=0; j<55; j++) {            noHeadRightModel *model=[[noHeadRightModel alloc]init];            model.tagID=i;            model.roomID=j;            model.roomName=[NSString stringWithFormat:@"%d層房%d",i,j];            model.roomImageUrl=[NSString stringWithFormat:@"room%d",j%5];            [self.allRightDataList addObject:model];        }    }        //創建列表    if (!_myTableView) {        _myTableView = [[UITableView alloc] initWithFrame:CGRectMake(0,0,tableWidthSize, kScreenHeight) style:UITableViewStylePlain];        _myTableView.backgroundColor=[UIColor grayColor];        _myTableView.showsVerticalScrollIndicator = NO;        _myTableView.showsHorizontalScrollIndicator=NO;        _myTableView.dataSource = self;        _myTableView.delegate = self;        _myTableView.tableFooterView=[[UIView alloc]init];        _myTableView.separatorColor= [UIColor colorWithRed:52.0f/255.0f green:53.0f/255.0f blue:61.0f/255.0f alpha:1];        [_myTableView registerClass:[leftTableCell class] forCellReuseIdentifier:NSStringFromClass([leftTableCell class])];        if ([self.myTableView respondsToSelector:@selector(setLayoutMargins:)]) {            self.myTableView.layoutMargins=UIEdgeInsetsZero;        }        if ([self.myTableView respondsToSelector:@selector(setSeparatorInset:)]) {            self.myTableView.separatorInset=UIEdgeInsetsZero;        }        [self.view addSubview:_myTableView];    }        //創建集合表格    if (!_myCollectionView) {        UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];        self.myCollectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(tableWidthSize+leftMargin,64, kScreenWidth-tableWidthSize-2*leftMargin, kScreenHeight) collectionViewLayout:layout];        self.myCollectionView.backgroundColor=[UIColor whiteColor];        self.myCollectionView.showsHorizontalScrollIndicator=NO;        self.myCollectionView.showsVerticalScrollIndicator=NO;        [self.myCollectionView registerClass:[rightCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([rightCollectionViewCell class])];        self.myCollectionView.dataSource = self;        self.myCollectionView.delegate = self;        [self.view addSubview:self.myCollectionView];    }        self.selectIndex=0;    //默認選擇第一個    if (self.dataList.count>0) {        self.curSelectModel=[self.dataList objectAtIndex:self.selectIndex];        [self.myTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:self.selectIndex inSection:0] animated:YES scrollPosition:UITableViewScrollPositionTop];        [self.myTableView reloadData];                //右邊數據加載        [self predicateDataSoure];    }}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];}

注意:isKeepScrollState是為了讓右邊是否記錄下當前滾動位置,若不想則可以把它設置為NO,它便會自動滾動到Y為0的位置;上面的代碼中還包含若列表有數據則默認選中第一個的實現功能,[self predicateDataSoure]則是實現的對數組進行過濾的操作,實用的OC謂詞的方式;

/** *  @author wujunyang, 15-10-11 20:10:28 * *  @brief  過濾右邊集合的數據 * *  @since <#version number#> */-(void)predicateDataSoure{    //過濾右邊的集合數據    NSPredicate *pre=[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"tagID=%ld",self.curSelectModel.tagID]];    self.rightdataList=[[self.allRightDataList filteredArrayUsingPredicate:pre] mutableCopy];    [self.myCollectionView reloadData];}

3.2表格中相應的UITableViewDataSource, UITableViewDelegate實現內容

#pragma mark UITableViewDataSource, UITableViewDelegate-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{    return self.dataList.count;}- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{    return 1;}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{    leftTableCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([leftTableCell class]) forIndexPath:indexPath];    cell.curLeftTagModel = [self.dataList objectAtIndex:indexPath.section];    cell.hasBeenSelected = (cell.curLeftTagModel==self.curSelectModel);        //修改表格行默認分隔線存空隙的問題    if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {        cell.layoutMargins=UIEdgeInsetsZero;    }    if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {        cell.separatorInset=UIEdgeInsetsZero;    }        return cell;}- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{    return tableCellHeight;}- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{    [tableView deselectRowAtIndexPath:indexPath animated:YES];        _selectIndex=indexPath.section;    self.curSelectModel=[self.dataList objectAtIndex:indexPath.section];    [self.myTableView reloadData];        [self predicateDataSoure];    //處理點擊在滾動置頂的問題    [tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];        self.isReturnLastOffset=NO;    if (self.isKeepScrollState) {        [self.myCollectionView scrollRectToVisible:CGRectMake(0, self.curSelectModel.offsetScorller, self.myCollectionView.frame.size.width, self.myCollectionView.frame.size.height) animated:NO];    }    else{                [self.myCollectionView scrollRectToVisible:CGRectMake(0, 0, self.myCollectionView.frame.size.width, self.myCollectionView.frame.size.height) animated:NO];    }}

上面有兩個知識點是關于表格默認分隔線距離左邊的調整,把默認沒有頂到左邊的樣式進行修改,另一個是關于點擊時自動滾動到置頂的實現方式;

3.3集合列表的UICollectionViewDataSource, UICollectionViewDelegate實現

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{    return self.rightdataList.count;}- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{    rightCollectionViewCell *ccell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([rightCollectionViewCell class]) forIndexPath:indexPath];    noHeadRightModel *model=[self.rightdataList objectAtIndex:indexPath.row];    ccell.curNoHeadRightModel=model;    return ccell;}- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{    return [rightCollectionViewCell ccellSize];}- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{    return UIEdgeInsetsZero;}- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section{    return 5;}- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section{    return 5;}- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{    noHeadRightModel *model=[self.rightdataList objectAtIndex:indexPath.row];    NSLog(@"你選擇的%@",model.roomName);}

3.4記錄滾動的位置(右邊列表的當前滾動位置記錄下來,存在左邊數據源的實體中,然后在左邊的列表點擊事件中進行判斷)

#pragma mark---記錄滑動的坐標(把右邊滾動的Y值記錄在列表的一個屬性中)-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{    if ([scrollView isEqual:self.myCollectionView]) {        self.isReturnLastOffset=YES;    }}-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{    if ([scrollView isEqual:self.myCollectionView]) {        leftTagModel * item=self.dataList[self.selectIndex];        item.offsetScorller=scrollView.contentOffset.y;        self.isReturnLastOffset=NO;    }    }-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{    if ([scrollView isEqual:self.myCollectionView]) {        leftTagModel * item=self.dataList[self.selectIndex];        item.offsetScorller=scrollView.contentOffset.y;        self.isReturnLastOffset=NO;            }    }-(void)scrollViewDidScroll:(UIScrollView *)scrollView{    if ([scrollView isEqual:self.myCollectionView] && self.isReturnLastOffset) {        leftTagModel * item=self.dataList[self.selectIndex];        item.offsetScorller=scrollView.contentOffset.y;    }}

 

源代碼下載址


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
岛国av午夜精品| 日韩av三级在线观看| 亚洲精品一区av在线播放| 久久人人97超碰精品888| 国产一区二区三区视频在线观看| 综合国产在线观看| 国产成人极品视频| 国产精品久久久久久中文字| 亚洲最新在线视频| 91社影院在线观看| 久久精品视频免费播放| 一区二区三区高清国产| 九九久久精品一区| 亚洲精品黄网在线观看| 性欧美长视频免费观看不卡| 成人av在线亚洲| 大胆人体色综合| 亚洲精品视频二区| 国产精品亚洲一区二区三区| 在线不卡国产精品| 这里只有精品丝袜| 亚洲另类图片色| 日韩免费观看高清| 国产精品久久久久一区二区| 亚洲大尺度美女在线| 欧美精品在线免费播放| 中文字幕日韩综合av| 国产成人综合久久| 久久天堂电影网| 午夜免费久久久久| 久久精品国产一区二区三区| 日本精品性网站在线观看| 成人免费淫片视频软件| 日韩视频在线观看免费| 亚洲国产精品悠悠久久琪琪| 国产欧美在线视频| 91av成人在线| 亚洲一区国产精品| 久久免费视频网站| 久久久久九九九九| 色yeye香蕉凹凸一区二区av| 一本色道久久88精品综合| 国产亚洲人成网站在线观看| 欧美亚洲一级片| 日韩av在线免费| 成人免费网站在线| 国产精品免费久久久久久| 中文字幕久久久| 91夜夜揉人人捏人人添红杏| 久热在线中文字幕色999舞| 国产精品18久久久久久麻辣| 97精品在线观看| 97av在线播放| 日韩视频在线免费观看| 国产精品一区=区| 欧美中文字幕在线播放| 久久久av一区| 亚洲成人aaa| 日韩激情视频在线播放| 亚洲精品丝袜日韩| 亚洲xxx自由成熟| 国产精品网址在线| 欧美日韩综合视频| 国产精品久久av| 欧美日韩中文字幕综合视频| 久久免费精品日本久久中文字幕| 日韩三级成人av网| 亚洲区中文字幕| 久久av.com| 精品伊人久久97| 国产精品日韩av| 国产精品久久久精品| 精品国产网站地址| 538国产精品视频一区二区| 国产日韩综合一区二区性色av| 久久亚洲精品毛片| 欧美成人精品激情在线观看| 在线亚洲男人天堂| 狠狠综合久久av一区二区小说| 国产一区欧美二区三区| 欧美福利视频在线| 色综合亚洲精品激情狠狠| 久久久久久久久综合| 欧美午夜电影在线| 欧美精品久久久久a| 亚洲人成自拍网站| 国产热re99久久6国产精品| 亚洲成人久久久| 亚洲欧美日韩网| 97人洗澡人人免费公开视频碰碰碰| 最近免费中文字幕视频2019| 亚洲成**性毛茸茸| 日产日韩在线亚洲欧美| 亚洲综合国产精品| 国产精品美女久久久免费| www.99久久热国产日韩欧美.com| 97成人精品视频在线观看| 日韩免费精品视频| 性欧美在线看片a免费观看| 美女av一区二区三区| 精品国产1区2区| 久久久亚洲影院| 在线亚洲国产精品网| 亚洲欧美成人在线| 最近2019年日本中文免费字幕| 精品亚洲国产视频| 精品国产乱码久久久久久天美| 国产97在线视频| 九九热99久久久国产盗摄| 日韩成人av网址| xxxx欧美18另类的高清| 亚洲天堂av网| 亚洲在线一区二区| 91精品国产91久久久久久久久| 日本午夜人人精品| 亚洲伊人一本大道中文字幕| 欧美日韩中文字幕日韩欧美| 91丨九色丨国产在线| 亚洲区免费影片| 欧美最顶级的aⅴ艳星| 亚洲欧美中文字幕在线一区| 欧美一区二区三区……| 国产欧美精品一区二区三区-老狼| 欧美日韩一区二区免费视频| 国产深夜精品福利| 亚洲网址你懂得| 日韩电影免费观看在线| 国产日韩欧美视频| 欧美大尺度电影在线观看| 成人av.网址在线网站| 亚洲女性裸体视频| 91精品免费视频| 国产深夜精品福利| 97欧美精品一区二区三区| 亚洲成人久久网| 538国产精品一区二区免费视频| 欧美亚洲视频在线看网址| 亚洲а∨天堂久久精品喷水| 欧美激情xxxxx| 最近2019中文免费高清视频观看www99| 亚洲成人a**站| 成人精品久久久| 国产精品爱啪在线线免费观看| 亚洲欧洲日韩国产| 91精品视频在线免费观看| 久久久久久这里只有精品| 亚州成人av在线| 成人激情电影一区二区| 久久久久久久av| 中国人与牲禽动交精品| 亚洲第一页中文字幕| 日韩精品极品在线观看播放免费视频| 欧美中文字幕在线| 久久久亚洲欧洲日产国码aⅴ| 国产精品久久久久久久久久免费| 尤物yw午夜国产精品视频明星| 日韩av在线影院| 欧美电影在线播放| 69国产精品成人在线播放| 国产精品免费看久久久香蕉| 国产日韩在线看片| 日产精品99久久久久久| 欧美日韩在线视频观看| 91精品在线看|