2017-09-04 52 views
2

我是iOS的新手。如何在點擊上應用色調顏色並在釋放時重置色調顏色?

我在集合視圖中有一個水平菜單欄。

我想在用戶點擊時應用色調顏色。

當用戶從按鈕釋放手指時,它必須返回到舊顏色。

每個按鈕是細胞

下面

是菜單條的通過SWIFT代碼

我試圖下面SWIFT代碼遷移到目標C產生的GIF

enter image description here

class MenuCell:BaseCell { 
// Type of Class UICollectionViewCell 
let imageView: UIImageView = { 
    let iv = UIImageView() 
    iv.image = UIImage(named:"home")?.imageWithRenderingMode(.AlwaysTemplate) 
iv.tintColor = UIColor.rgb(91,green:14,blue:13) 
}() 

// Dont know how to convert below code to Obj C 
override var highlighted : Bool { 
    didSet { 
    imageView.tintColor = highlighted ? UIColor.whiteColor() : UIColor.rgb(91,green:14,blue:13) 
    } 
} 

// Dont know how to convert below code to Obj C 

override var selected : Bool { 
    didSet { 
    imageView.tintColor = highlighted ? UIColor.whiteColor() : UIColor.rgb(91,green:14,blue:13) 
    } 
} 

在Objective C中,沒有didset方法(類型:UICollectionViewCell)顯示在自我暗示中

我到目前爲止所嘗試的內容如下。

MenuCell.m // Type is UICollectionViewCell 
...... 
self.menuCellIcon.image = [[UIImage imageNamed:@"play.png"] 
          imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 

self.menuCellIcon.tintColor = [UIColor 
           colorWithRed:91/255 
           green:14/255 
           blue:13/255 
           alpha:1]; 
self.menuCellIcon.translatesAutoresizingMaskIntoConstraints = false; 

回答

1

您可以覆蓋setHighlighted/setSelected

- (void)setHighlighted:(BOOL)highlighted { 
    [super setHighlighted:highlighted]; 
    // your tint color code 
} 

- (void)setSelected:(BOOL)selected { 
    [super setSelected:selected]; 
    // your tint color code 
} 
+0

三江源答覆。請檢查更新後的問題的最後部分 – ios

+0

在您的代碼中,您設置了'backgroundColor'而不是'tintColor' ... –

+0

這些圖標是'UICollectionViewCell's?還是'UIButton's? –