色调不变的图像

问题描述:

我有一个用集合视图制作的菜单栏。每个单元格包含一个图像(png格式)色调不变的图像

我试图在代码中设置色调,如下所示,但图标的色调不变。

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    MenuCell *cell = [collectionView 
           dequeueReusableCellWithReuseIdentifier:self.cell 
           forIndexPath:indexPath]; 
    //cell.backgroundColor = [UIColor blueColor]; 

    cell.menuCellIcon.image = [UIImage 
           imageNamed:[self.menuCellImages objectAtIndex:indexPath.item] ]; 
    [cell.menuCellIcon.image 
    imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 

    cell.menuCellIcon.tintColor = [UIColor whiteColor]; 
... 
+0

尝试更改为原始渲染模式。 – Priyal

This line ... [cell.menuCellIcon.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];

返回使用呈现模式模板的新图像。您目前没有对此代码的结果做任何事情。

您应该解决您的代码是这样的...

cell.menuCellIcon.image = [[UIImage 
          imageNamed:self.menuCellImages[indexPath.item]] 
          imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 

而且,使用新的语法来访问数组。 objectAtIndex是一个非常古老的语法:)

+0

谢谢您的帮助。请您回复评论有关访问数组 – ios

+0

@ios的新语法,新语法与我的回答相似。例如'array [0]'。而不是'[array objectAtIndex:0]':) – Fogmeister

你需要写这样

UIImage *image = [UIImage imageNamed:[self.menuCellImages objectAtIndex:indexPath.item] ]; 
cell.menuCellIcon.image = [image 
    imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 

cell.menuCellIcon.tintColor = [UIColor whiteColor]; 
+2

@Fogmeister回答更新 –

+0

感谢您的帮助 – ios

你不使用从该行返回的UIImage

[cell.menuCellIcon.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 

应使用以下语法:

cell.menuCellIcon.image = [UIImage 
          imageNamed: [self.menuCellImages objectAtIndex:indexPath.item]        
          imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]]; 
+0

感谢您的帮助 – ios

+0

谢谢您的更新回答 – ios