문제

각각 50 x 50 픽셀 크기의 약 50 개의 이미지가 있습니다. 나는 사용자가 그들 중 하나를 선택하기를 원합니다. 그래서 먼저 나는 uitableview에 대해 생각했지만 그것은 옳은 일이 아닙니다. 많은 화면 공간이 낭비됩니다. 모든 이미지를 다른 이미지 아래에 놓는 대신 6 개의 열과 N 행을 말하면 그리드를 표시하는 것이 좋습니다.

나는 UiscrollView를 사용하여 자동으로 배열하여 그리드처럼 보이도록 UIView 객체로 채우는 것입니다. 그게 갈 길인가요? 아니면 다른 제안이 있습니까?

도움이 되었습니까?

해결책

앱에서 이미지가있는 NXN 그리드와 UiscrollView가 소유 한 "선"을 그리는 다른 하위 뷰에서 매우 유사한 일을하고 있습니다. 이미지를 그리는 별도의 뷰를 사용하는 것이 좋습니다.

-(void) drawRect(CGRect rect) {
    CGRect smallerRect = CGRectMake(x, y, width, height);
    [yourImage drawRect: smallerRect];
    // repeat as needed to draw the grid
 }

또 다른 포스터는 Uiscrollview가 귀하의 견해를 소유하고 있다면 터치 이벤트를 얻을 수 없다고 언급했습니다. 이것은 사실이 아닙니다. 나는 그것을 작동한다. 그래도 다음을 설정해야 할 수도 있습니다.

[yourScrollView setUserInteractionEnabled: YES]
[yourGridView setUserInteractionEnabled: YES]

다른 팁

그만큼 320 도서관 이를 수행하는 수업이 있습니다.

테이블 뷰가 반드시 행 당 하나의 이미지를 보여주는 것을 암시하는 것은 아닙니다. 테이블 셀을 사용자 정의 할 수 있으며 6 개의 50x50 uiimageviews가있는 셀 서브 클래스는 매우 간단합니다. 스크롤보기보다 유연하지 않지만 행당 6 개의 이미지가 목표라면 테이블보기가 가장 빠른 방법입니다.

Three20은 끔찍합니다. 나는 그것을 사용했습니다. 나는 그것을 추천하지 않습니다 ... 그리드를 표시하는 것은 쉽습니다 ...

    - (void) reloadGridView
    {

        scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(5, 54, scrollViewWidth, scrollViewHeight8)];
        scrollView.delegate = self;
        scrollView.showsVerticalScrollIndicator = NO;
        scrollView.showsVerticalScrollIndicator = NO;
        scrollView.userInteractionEnabled = YES;
        scrollView.scrollEnabled = YES;

        [self.view addSubview:scrollView];


        int x = 10;
        int y = 10;

        divisor = 1;

        for (int i = 0; i < [self.photosArray count]; i++) {

            int buttonTag = divisor;

            UIImage *thumb = [UIImage imageWithContentsOfFile:[self thumbPathAtIndex:i]];
            //********* CREATE A BUTTON HERE **********
            //********* use the thumb as its backgroundImage *******


            if(divisor%4==0){
                y+=70; 
                x = 10;

            }else{
               x += 70;
            }

            divisor++;
        }
        [scrollView setContentSize:CGSizeMake(scrollViewWidth, ([self.photosArray count]%4 == 0) ? y : y+100)];

}

그리고 조경에있을 때 6 개의 이미지를 원한다면 - Islandscape를위한 bool을 설정하십시오.

if (isLandscape) {
    //change the divisor to change @ 6 instead of 4
}

보다 고급 GridView가 필요한 경우 AQGRIDVIEW (Google IT)를 확인하십시오.

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