문제

autoresizemask (iPhone 3.0)을 사용하여 제대로 크기를 조정하지 않는 uitable 뷰가 있습니다.

UitableView는 UITABBARCONTROLLER 내부의 uivigationcontroller 내부의 UIViewController 내부에 있으며 모두 프로그래밍 방식으로 작성됩니다. 상태 표시 줄이 보입니다.

UIViewController의 코드는 기본적으로 다음과 같습니다.

- (void)loadView {
    UIView* rootView = [[UIView alloc] init];
    self.view = rootView;
    [rootView release]; 
}

- (void)viewDidLoad {
    [super viewDidLoad];

    // table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 480-20-49-44)];
    table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)]; table.autoresizingMask = UIViewAutoresizingFlexibleHeight;
    [self.view addSubview:table];
}

이와 같이 만들어지면 Uitableview는 사용 가능한 공간보다 약간 큽니다. 내가 착각하지 않으면 네비게이션 막대의 크기 인 정확히 44 픽셀 더 큰 것입니다.

그러나 내가 댓글을 달고 다음 줄에 댓글을 달면 uitableview의 크기가 정확히 맞습니다. UitableView의 크기를 수동으로 계산하는 대신 AutoresizingMask를 사용하는 것이 좋습니다. 내가 뭘 잘못하고 있죠?

미리 감사드립니다!

도움이 되었습니까?

해결책

문제는로드 뷰에서 루트보기의 프레임을 설정하지 않았다는 것 같습니다. 해당 프레임을 정의한 다음 해당 프레임과 관련하여 서브 뷰의 프레임을 정의하면 자동으로 표시된 마스크는 프레임 워크에 의해 루트보기가 크기를 조정하는 방법에 따라 서브 뷰를 올바르게 조정합니다.

예를 들어:

- (void)loadView {
    UIView* rootView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    self.view = rootView;
    [rootView release]; 
}

- (void)viewDidLoad {
    [super viewDidLoad];

    table = [[UITableView alloc] initWithFrame:self.view.frame]; 
    table.autoresizingMask = UIViewAutoresizingFlexibleHeight;
    [self.view addSubview:table];
}

올바른 방향으로 나를 지적한 Colin Gislason에게 감사합니다.

다른 팁

Autoresizing 마스크는 테이블보기의 초기 크기에 도움이되지 않습니다. 테이블보기는 당신이 제공하는 프레임으로 만들어집니다. 자동화 된 마스크는 부모의 프레임이 변경 될 때 부모보기에 비해이 프레임을 조정하는 규칙을 정의합니다.

따라서 320x100 인 테이블을 정의하면 명시 적으로 변경하지 않거나 부모보기의 프레임이 변경되지 않으면 해당 크기를 유지합니다.

다른 견해에 따라 부모가 보유한 다른 견해 또는 부모의 프레임 자체에 의해 계산을 수행 할 수 있습니다.

UitableViewController 서브 클래스의 uiviewController 서브 클래스 인드 스탠드를 만듭니다.

UitableView 인스턴스를 삽입하십시오.

펜촉에서는 단순히 uiview를 끌고 떨어 뜨립니다

그 위에는 기존의 uitable view 객체를 배치하십시오.

NIB 또는 ViewDidload 메소드를 통해 UitableView의 크기를 설정하십시오.

NIB를 통해 참조, DataSource 및 Delegate를 설정하십시오.

이제 단순히 UIViewController 클래스를 전송하고 원하는대로 테이블 뷰 크기를 변경할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top