【问题标题】:Thumb Nail Gallery?拇指指甲画廊?
【发布时间】:2010-09-01 19:43:15
【问题描述】:

您好,我很好奇我将如何实现一个类似于(见下文)的视图,类似于用于 iPhone 照片应用程序的视图。我最初的想法是一个表格视图,每个单元格包含 4 张图像,谁能指出我正确的方向。我对使用来自 Apple 的 API 特别感兴趣,因此现阶段并不太在意第三方 API / 控制器。

【问题讨论】:

    标签: iphone objective-c cocoa-touch


    【解决方案1】:

    是的,正如您所说,表格视图可以工作,4 个东西(/行)中的每一个都是带有自定义图像的 UIButton。您必须确保表格行本身不可选择。 (UITableView Setting some cells as "unselectable") 如果您有很多行,请确保使用表格视图单元格缓存。

    实际的表格视图单元格可以是 UITableViewCell 子类或只是普通的子类,在其 contentView 中添加了一些子视图。

    【讨论】:

    • 实际上,在阅读后我注意到您没有提到您希望图像是“可点击的”。如果这样做,请使用 UIButtons,如果不这样做,请使用 UIImage(您可以将点击手势识别器附加到它,但这可能有点矫枉过正)
    • 不要重新发明轮子。 Apple 提供了类来做这种事情。
    【解决方案2】:

    我建议Three20 API。这是用于构建 Facebook iPhone 应用程序的 API,具有非常多的 UI 元素集合,包括许多照片管理 UI。

    缩略图查看器看起来像(来自他们的网站):

    【讨论】:

    • 通常这是一个很好的答案,但当他/她明确要求不要第三方解决方案或 API 时......
    • 我读到“现阶段不太在意第 3 方 API / 控制器”。因为他不介意建议使用 3rd 方 API。但是对令人困惑的陈述的进一步分析表明您可能是正确的。 :P 哦,好吧,将来可能会帮助其他人知道它的存在。
    【解决方案3】:

    在 iOS 上,这项工作主要是为您完成的。查看 Apple 的文档以获取 MPMediaPickerController。

    【讨论】:

    • 我查看了文档,但它似乎无法呈现您自己的自定义图像(如果可以的话,three20 似乎会实现它)(而且我我不确定 OP 是否想使用自定义图像)
    【解决方案4】:

    AQGridView 是 FOSS,用于 Kobo 阅读器和 Netflix Actors 等许多知名应用程序。

    【讨论】:

      【解决方案5】:

      您需要使用 UIScrollView 和一堆 UIImageViews 或 UIButtons(以图像作为背景图像)。此代码在滚动视图上使用按钮。您还需要一个生成缩略图的函数,除非您使用资产库,在这种情况下,该函数已经存在。

          [scrollview setContentSize:CGSizeMake(320, (items*itemWidth)];
      
          for (int i = 0; i < [items count]; i++) {
      
              if (i % 4 == 0) {
      
                  y+=1;
                  x = 0;
              }
      
      
              UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
              [myButton setBackgroundImage:[UIImage imageWithCGImage:[items objectAtIndex:i]] forState:UIControlStateNormal];
              CGRect rect2 = myButton.frame;
              rect2.size.height = kScrollObjHeight2;
              rect2.size.width = kScrollObjWidth2;
              rect2.origin.y = 10 + (y * 70) + (y *5);
              rect2.origin.x = 8 + (x * kScrollObjWidth2) + (x *8);
              myButton.frame = rect2;
              myButton.tag = i;   // tag our images for later use when we place them in serial fashion
              x = x + 1;
      
      
              [myButton addTarget:self action:@selector(clickFunction:) forControlEvents:UIControlEventTouchUpInside];
              [self.view addSubview:myButton];
      
      
              [scrollview addSubview:myButton];
      
          }
      
      };
      
      
      [scrollview setBackgroundColor:[UIColor blackColor]];
      [scrollview setCanCancelContentTouches:NO];
      scrollview.indicatorStyle = UIScrollViewIndicatorStyleWhite;
      scrollview.clipsToBounds = YES;     // default is NO, we want to restrict drawing within our scrollview
      scrollview.scrollEnabled = YES;
      
      scrollview.pagingEnabled = YES;
      

      【讨论】:

        猜你喜欢
        • 2012-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-22
        • 2019-08-16
        • 1970-01-01
        • 2012-11-23
        • 2016-03-05
        相关资源
        最近更新 更多