iOS TableView 헤드 보 기 는 오프셋 에 따라 크기 를 조정 합 니 다.

본 논문 의 사례 는 iOS TableView 가 드 롭 다운 효 과 를 실현 하 는 구체 적 인 코드 를 공유 하 였 으 며,구체 적 인 내용 은 다음 과 같다.
프로젝트 를 할 때 일부 TableView 는 드 롭 다운 TableView 를 사용 하여 HeardView 헤드 보 기 를 오프셋 에 따라 변화 시 킵 니 다.전에 한 번 했 지만 기록 되 지 않 았 습 니 다.지금 할 때 항상 문제 가 생 긴 다.예 를 들 어 내 릴 때 원점 에서 좌우 양쪽 으로 확대 하 는 것 은 효과 문제 일 뿐이다.그리고 보 이 는 보기 가 확실히 커 졌 지만 아래 Table View Cell 로 덮어 집 니 다.처음에 그 안에 추 가 된 보기 가 커 졌 다 고 생각 했 는데 Table View HeardView 가 커지 지 않 았 습 니 다.NSLog 에서 두 보기 의 높이 를 인쇄 했 는데 똑 같 아서 문 제 를 찾 을 수 없 었 습 니 다.
인터넷 에서 관련 예 를 찾 아 보 았 습 니 다.각각 방법 이 있 습 니 다.어떤 것 은 오프셋 에 따라 Table View 의 크기 를 설정 하 는 것 입 니 다.어떤 것 은 우리 가 Table View Heard View 로 설정 한 그 보기 의 크기 를 설정 하 는 것 입 니 다.모두 느낌 이 안 되 는 지 시험 해 보 았 습 니 다.크기 조정 효과 가 있 는 것 같 지만 조금 만 늘 리 면 아래 의 cell 을 덮 을 것 입 니 다.
그 다음 에 스스로 모색 하고 조정 한 후에 저 는 오프셋 으로 안의 imageView 의 크기 를 조절 합 니 다.imageView 는 제 가 설정 한 HeardView 의 하위 보기 입 니 다.그리고 heardView 와 TableViewheard 의 크기 는 imageView 에 따라 변화 하지 않 고 좌표 만 변 했 습 니 다.사실은 이것 은 착각 입 니 다.진실 한 효 과 는 imageView 좌표 가 왼쪽 위로 이동 하고 크기 도 변화 합 니 다.한편,heard View 와 Table Viewheard 는 커지 지 않 았 지만 imageView 가 커 진 부분 이 그들의 위 를 덮 고 있어 서 heard View 와 Table Viewheard 도 커 졌 다 고 생각 합 니 다.글 아래 의 논리 도 를 참고 할 수 있 습 니 다.
먼저 효 과 를 살 펴 보 자.하 나 는 내리 지 않 았 을 때의 효과 이 고,하 나 는 내리 지 않 았 을 때의 효과 이다.

imageView 가 사방 으로 커 졌 고 프로필 사진 과 닉네임 은 수직 방향 위치 만 바 뀌 었 을 뿐 크기 는 변 하지 않 았 다.
여기에 사용 할 컨트롤 은 다음 그림 에 들 어 갑 니 다.

#define ScreenWidth [UIScreen mainScreen].bounds.size.width
view DidLoad 에 만 들 기

//==========          ===========
  imageHight = 250;
  [self creatHeardView];

- (void)creatHeardView
{
  headerView = [[UIView alloc] initWithFrame:(CGRectMake(0, 0, ScreenWidth, imageHight+50))];
  //    
  heardImageView = [[UIImageView alloc] init];
  heardImageView.frame = CGRectMake(0, 0, ScreenWidth, imageHight);
  heardImageView.image = [UIImage imageNamed:@"backGround.jpg"];
  [headerView addSubview:heardImageView];
  //    
  personImageView = [[UIImageView alloc] initWithFrame:CGRectMake(ScreenWidth-30-60, imageHight-30, 60, 60)];
  personImageView.layer.cornerRadius = CGRectGetWidth(personImageView.frame)/2;
  personImageView.layer.masksToBounds = YES;
  [headerView addSubview:personImageView];
  //   
  personNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMinX(personImageView.frame)-200, CGRectGetMinY(personImageView.frame), 180, 30)];
  personNameLabel.font = [UIFont systemFontOfSize:15];
  personNameLabel.textColor = [UIColor whiteColor];
  personNameLabel.textAlignment = NSTextAlignmentRight;
  [headerView addSubview:personNameLabel];
  //    
  introduceLabel = [[UILabel alloc] initWithFrame:CGRectMake(30, CGRectGetMaxY(personImageView.frame), ScreenWidth-60, 20)];
  introduceLabel.font = [UIFont systemFontOfSize:10];
  introduceLabel.textColor = [UIColor grayColor];
  introduceLabel.textAlignment = NSTextAlignmentRight;
  [headerView addSubview:introduceLabel];
  
  comTableView.tableHeaderView = headerView;//     
}

   TableView                      ,
#pragma mark -     
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
  CGFloat width = self.view.frame.size.width; //     
  CGFloat yOffset = scrollView.contentOffset.y; //    y ,        64 
  if (yOffset < 0) {//      ,    
    CGFloat totalOffset = imageHight + ABS(yOffset);
    CGFloat f = totalOffset / imageHight;//    
    //       frame        。
    heardImageView.frame = CGRectMake(- (width * f - width) / 2, yOffset, width * f, totalOffset); 
  }
}
논리 그림:

이렇게 하면 TableView 의 드 롭 다운 헤드 보기 기능 이 실 현 됩 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기