2015-10-06 75 views
1

我正在使用UICollectionView顯示圖像的項目中工作。我應用了所有委託方法,它工作正常,但圖像顯示在UICollectionView細胞是未顯示全尺寸只有一些部分顯示 請建議我什麼樣的變化,我有我的代碼做顯示UICollectionViewCelliOS:UICollectionView不顯示單元格中的完整圖像

完整圖像我使用了以下代碼:

.h文件中

#import <UIKit/UIKit.h> 

@interface photos : UIViewController<UICollectionViewDataSource,UICollectionViewDelegateFlowLayout> 
{ 
    UICollectionView *_collectionView; 
    NSMutableArray * imagearray; 
    UIImageView *imgview; 
} 


@end 

.m文件

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

    UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init]; 
    _collectionView=[[UICollectionView alloc] initWithFrame:self.view.frame collectionViewLayout:layout]; 
    [_collectionView setDataSource:self]; 
    [_collectionView setDelegate:self]; 

    [_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cellIdentifier"]; 
    [_collectionView setBackgroundColor:[UIColor whiteColor]]; 


    [self.view addSubview:_collectionView]; 

    imagearray = [[NSMutableArray alloc]initWithObjects:@"download3.jpeg", @"12045540_717548405011935_7183980263974928829_o.jpg" , @"download4.jpeg", @"download5.jpeg", @"download6.jpg", @"download12.jpeg", @"download13.jpeg", @"download16.jpeg",@"download3.jpeg", @"download6.jpg", @"download12.jpeg", @"download16.jpeg", @"download3.jpeg", @"12045540_717548405011935_7183980263974928829_o.jpg" , @"download4.jpeg", @"download5.jpeg", @"download6.jpg", @"download12.jpeg", nil]; 
} 

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section 
{ 
    return [imagearray count]; 
} 

// The cell that is returned must be retrieved from a call to -dequeueReusableCellWithReuseIdentifier:forIndexPath: 
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 

    UICollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath]; 
    imgview = (UIImageView *)[cell viewWithTag:100]; 
    imgview.image = [UIImage imageNamed:[imagearray objectAtIndex:indexPath.row]]; 

    imgview.contentMode = UIViewContentModeScaleAspectFit; 
    imgview.clipsToBounds = YES; 
    //cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"photo-frame.png"]]; 
    [self.view addSubview:imgview]; 
    cell.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:[imagearray objectAtIndex:indexPath.row]]]; 


    return cell; 
} 

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

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section 
{ 
    return UIEdgeInsetsMake(50, 20, 50, 20); 
} 
+0

UIViewContentModeScaleAspectFit要細,我沒有初始化我UIImageView多數民衆贊成。在圖像視圖上看起來像一個錯誤的框架。 –

+0

我已經使用它,但結果相同 –

+0

@ArthurGevorkyan我如何爲imageview設置框架? –

回答

2
cell.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:[imagearray objectAtIndex:indexPath.row]]]; 

將重複imageView,你看不到正確的圖像。 如果你想在您的收藏觀察室展示的形象圖,

  1. 添加的UIImageView您collectionViewCell

  2. 你可以在CellForItem設置圖片的UIImageView的 - >

    cell.imageview.image =[UIImage imageNamed :@"image name"]; 
    cell.imageview.contentMode = UIViewContentModeScaleAspectFit; 
    

如果我不明白這個問題PLZ解釋更多。

+0

我使用自定義集合視圖爲我的應用程序它被添加和工作正常,但是當我應用的圖像數組顯示在單元格上它只顯示圖像的一小部分,如果我使用500 * 500分辨率的圖像,它只顯示圖像頂部的160 * 160部分,我在魔杖中顯示完整的圖像。我只應用上面的完整代碼沒有故事板,所以請查看代碼並回答它 –

+0

我的意思是不要使用單元格背景來分配圖像,在您的自定義單元格中使用相同的單元格框將init初始化爲UIImageView並將該圖像設置爲此視圖在單元格爲 – engmahsa

+0

當你使用「colorWithPatternImage」,你不能看到正確的圖像大小 – engmahsa

0
  1. 好吧,首先確保圖像視圖的框架 是正確的。這是我對另一個問題的回答,但調試視圖層次結構 也適用於您的案例(請參閱 屏幕截圖):https://stackoverflow.com/a/32861703/2799410

  2. 如果它是由於一個錯誤的幀,只使用:

    imgView.frame =的CGRect(0.0,0.0,cell.contentView.bounds.size.width/4,cell.contentView.bounds.size。高度)

(它將圖像視圖的框架設置在單元格的左上角並佔用四分之一寬度)。

+0

不工作 –

+0

可能有很多原因:佈局限制不正確,單元格本身尺寸錯誤等。我們最好聊聊天。訪問http://chat.stackoverflow.com/users/2799410/arthur-gevorkyan並開始對話。 –

+0

我不使用故事板所有的代碼是自定義的 –

1

爲什麼會出現這個問題

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 

    UICollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath]; 

    imgview = (UIImageView *)[cell viewWithTag:100]; 
    imgview = [[UIImageView alloc]initWithFrame:CGRectMake(0,0,160, 160)]; 

    imgview.image = [UIImage imageNamed:[imagearray objectAtIndex:indexPath.row]]; 

    imgview.contentMode = UIViewContentModeScaleAspectFit; 
    //imgview.clipsToBounds = YES; 

    cell.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:[imagearray objectAtIndex:indexPath.row]]]; 
    [cell.contentView addSubview:imgview]; 

    return cell; 
} 
相關問題