كيف يمكنك تنفيذ شبكة للتمرير في التطبيق اي فون الخاص بك؟

StackOverflow https://stackoverflow.com/questions/820570

سؤال

ولدي حوالي 50 صورة بحجم 50 × 50 بكسل لكل منهما. أريد للمستخدم لاختيار واحد منهم. أولا حتى فكرت في UITableView، ولكن هذا ليس فقط الشيء الصحيح. ما فرطت الكثير من مساحة الشاشة. بدلا من وضع كل الصور واحد دون الآخر، فإنه سيكون من الأفضل أن تظهر شبكة من يتيح القول 6 أعمدة وصفوف ن.

وأود أن استخدام UIScrollView وملئه حتى مع الأشياء UIView التي I تلقائيا ترتيب بحيث تظهر وكأنها الشبكة. غير أن وسيلة للذهاب؟ أو أي اقتراحات أخرى؟

هل كانت مفيدة؟

المحلول

وأنا أفعل شيئا من هذا القبيل جدا في بلدي app- على شبكة NxN مع صورة تحتها، وsubview آخر على رأس لرسم "الخطوط"، وكلها مملوكة ل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]

نصائح أخرى

three20 مكتبة لديها فئة التي تفعل ذلك.

وجهة نظر الجدول لا يعني بالضرورة تظهر صورة واحدة لكل صف، كما اشرتم. خلايا الجدول يمكن تخصيص، وسوف فئة فرعية الخلية مع ستة 50X50 UIImageViews تكون بسيطة جدا. انها ربما أقل مرونة من وجهة نظر التمرير ولكن إذا ست صور لكل صف هو هدفك ثم عرض الجدول هو أسرع طريقة للحصول عليه.

و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

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

وإذا كنت في حاجة الى gridView أكثر تقدما تحقق من AQGridView (جوجل هو)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top