1

カスタムを作成しましたUICollectionViewController

表示したいアルバムが 2 つあります。それぞれの機能は少し異なりますが、ビューは基本的に同じです (カスタム セル サイズなど)。このベースから、私が求めている特定の動作でViewControllerカスタマイズされた 2 を継承しています。UICollectionViewController

遺産は

  • UICollectionViewController -> GalleyViewController (私の基本クラス) -> CameraAlbumViewController

  • UICollectionViewController -> GalleyViewController (私の基本クラス) -> DifferentAlbumViewController

何らかの理由で、画面に中央のセルが表示されませんが、クリックすることはできます。セルのサイズを変更しようとしましたが、3 つのセルが表示されますが、セルの境界がオフになっています (セル間で選択でき、デリゲート メソッドが呼び出されています)。

継承が間違っているのではないかと考えて(おそらく基本クラスに何かが欠けている)、 の最も基本的な使用方法で新しいプロジェクトを作成し、UICollectionViewControllerいくつかのチュートリアルに従いました。

まだ中央の細胞が見えない

このことから、おそらく絵コンテの何かが間違っていると思います。

私のコードはこれです:

#import "MyCollectionViewController.h"
#import <AssetsLibrary/AssetsLibrary.h>

@interface CollectionViewCell : UICollectionViewCell
// customized cell
@property (nonatomic,strong) UIImageView *imageView;
@end

@implementation CollectionViewCell

@synthesize imageView;
-(id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self)
    {
        self.imageView = [[UIImageView alloc] initWithFrame:frame];
        [self.contentView addSubview:self.imageView];
    }
    return self;
}

@end

@interface MyCollectionViewController ()
// the collection view controller
@property (nonatomic,strong) NSMutableArray *photos;
@property (nonatomic,strong) ALAssetsLibrary *defaultLibrary;
@end

@implementation MyCollectionViewController

@synthesize photos,defaultLibrary;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Do any additional setup after loading the view.
    [self.collectionView registerClass:[CollectionViewCell class] forCellWithReuseIdentifier:@"cell"];
    [self initAssets];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

-(void)initAssets
{
    self.photos = [NSMutableArray new];
    [self.photos removeAllObjects];
    self.defaultLibrary = [[ALAssetsLibrary alloc] init];
    [self.defaultLibrary enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
                                       usingBlock:^(ALAssetsGroup *group, BOOL *stop)
     {

         [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop)
          {
              if (asset) {
                  [self.photos addObject:asset];

              }
          }];
         if (group == nil)
         {
             [self.collectionView reloadData];
         }
     } failureBlock:^(NSError *error)
     {
         NSLog(@"Error");
     }];


}

#pragma mark -
#pragma mark CollectionViewDelegates
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    return self.photos.count;
}

-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
    return 1;
}

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    CollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
    ALAsset *asset = [self.photos objectAtIndex:indexPath.row];
    UIImage *im = [UIImage imageWithCGImage:[asset thumbnail]];
    cell.imageView.image = im;
    return cell;
}

-(CGSize)collectionView:(UICollectionView *)collectionView
                 layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    return CGSizeMake(100, 100);
}

@end

シミュレーターからのストーリー ボード、カメラ アルバムのスクリーンショット

ストーリーボード セル構成 シミュレーターでの結果 フォトギャラリーに期待する画像

4

0 に答える 0