iOS TableView 헤드 보 기 는 오프셋 에 따라 크기 를 조정 합 니 다.
4085 단어 iOSTableView드 롭 다운 크기 조정
프로젝트 를 할 때 일부 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 의 드 롭 다운 헤드 보기 기능 이 실 현 됩 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
View의 레이아웃 방법을 AutoLayout에서 따뜻한 손 계산으로 하면 성능이 9.26배로 된 이야기이 기사는 의 15 일째 기사입니다. 어제는 에서 이었습니다. 손 계산을 권하는 의도는 없고, 특수한 상황하에서 계측한 내용입니다 화면 높이의 10 배 정도의 contentView가있는 UIScrollView 레이아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.