图像的色调不变

时间:2017-09-04 09:45:53

标签: ios objective-c uiimageview

我有一个带有集合视图的菜单栏。每个单元格包含一个图像(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];
...

3 个答案:

答案 0 :(得分:3)

这一行...... [cell.menuCellIcon.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];

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

你应该修改你的代码......

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

此外,使用新语法访问数组。 objectAtIndex是一种非常古老的语法:)

答案 1 :(得分:1)

你需要这样写

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

cell.menuCellIcon.tintColor = [UIColor whiteColor];

答案 2 :(得分:1)

您不使用从此行返回的UIImage

[cell.menuCellIcon.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];

您应该使用以下语法:

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