cell展開與收縮 聯動效果
阿新 • • 發佈:2019-01-27
#import "EFPayViewController.h" #import "EFDetailMessageTableViewCell.h" static NSString *EFDetailMessageTableViewCellID = @"EFDetailMessageTableViewCell"; @interface EFPayViewController ()<UIScrollViewDelegate, UITableViewDataSource, UITableViewDelegate, EFDetailMessageDelegate> @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; @property (weak, nonatomic) IBOutlet UITableView *tableView; @property (weak, nonatomic) IBOutlet NSLayoutConstraint *heightConstraint; @end @implementation EFPayViewController - (void)viewDidLoad { [super viewDidLoad]; self.title = @"確認支付"; // Do any additional setup after loading the view from its nib. } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self prepareUI]; } - (void)prepareUI { // tableView _tableView.delegate = self; _tableView.dataSource = self; // 註冊 [_tableView registerNib:[UINib nibWithNibName:EFDetailMessageTableViewCellID bundle:[NSBundle mainBundle]] forCellReuseIdentifier:EFDetailMessageTableViewCellID]; // 去除分割線 _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; // 關閉彈性效果 _tableView.bounces = NO; // scrollView _scrollView.delegate = self; //關閉滾動條 _scrollView.showsVerticalScrollIndicator = NO; _scrollView.showsHorizontalScrollIndicator = NO; _scrollView.contentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height); } #pragma mark - 代理方法 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 1; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { EFDetailMessageTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:EFDetailMessageTableViewCellID forIndexPath:indexPath]; cell.selectionStyle = UITableViewCellSelectionStyleNone; cell.delegate = self; #if 0 static NSString *cellName = @"cellName"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellName]; if (!cell) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellName]; } cell.selectionStyle = UITableViewCellSelectionStyleNone; cell.textLabel.text = @"test"; #endif return cell; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 90; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { EFDetailMessageTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:EFDetailMessageTableViewCellID forIndexPath:indexPath]; if (self.heightConstraint.constant == 90) { self.heightConstraint.constant = 150; cell.pullDownImage.transform = CGAffineTransformMakeRotation(M_PI/2*2); [self.tableView reloadData]; } else self.heightConstraint.constant = 90; [self.tableView reloadData]; } - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath { #if 0 self.heightConstraint.constant = 150; [self.tableView reloadData]; #endif } - (void)efDetailMessage:(UITableViewCell *)cell button:(UIButton *)button { #if 0 if (!button.selected) { self.heightConstraint.constant = 100; } else { self.heightConstraint.constant = 150; } [_tableView reloadData]; #endif } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ @end