我目前試圖創建一個簡單的方法調用我的ViewController
如:iOS:有沒有辦法獲得視圖中每個元素的backgroundColor?
[self greyscale];
凡灰階處於UIViewController
類的方法。使用遞歸和塊,我試圖收集每一個元素在ViewController
並得到他們的backgroundColor
屬性,然後改變這些值,使之成爲灰度什麼,我試圖做的是即[UIColor colorWithWhite:(0.299*red + 0.587*green + 0.114*blue) alpha:alpha];
我已經試過了以下(到目前爲止只存在了uibuttons):
- (void)runBlockOnAllSubviews:(SubviewBlock)block {
block(self.view);
for (UIViewController* viewController in [self.view subviews]) {
[viewController runBlockOnAllSubviews:block];
}
}
- (void)greyscale {
[self runBlockOnAllSubviews:^(UIView *view) {
if ([view isKindOfClass:[UIButton class]]) {
[(UIControl *)view setBackgroundColor:[UIColor redColor]];
[(UIButton *)view setTitleColor:[UIColor purpleColor] forState:UIControlStateNormal];
}
}];
到目前爲止設置背景色的作品,但問題是我已經接收元件的電流的backgroundColor所以我可以把它送到一個具有「灰度化的另一種方法「對我來說,所以我可以做類似的事情:
[(UIControl *)view setBackgroundColor:[UIColor greyScaleWith:view.backgroundColor]];
當我嘗試將其設置爲白色時,因爲"view"'s backgroundColor
是nil
或0
;
有沒有更好的方式來訪問和更改uiview上的每個元素的顏色,而不會使它在初始ViewController中變得複雜?我想這樣做灰度,darkerShade等。
謝謝!
你似乎這裏有兩個問題。每個主題詢問一個。你需要幫助你爲什麼變白?還是你想幫助完成這個整個過程? – rmaddy
如果這不是我想做的最理想的方式,我很想學習如何更有效地做到這一點。 – KingPolygon