The logic in colorForHex is incorrect for some color values, specifically color values starting with '#'. This is not notable for colors specified by users, because the hash mark is stripped out before the value is passed to colorForHex. However, the values listed internally, 'aqua', 'fuchsia', 'lime' and 'maroon' are improperly returned as transparent.
colorForHex should simply strip the '#' character before interpreting the color values, which would simplify the logic.
// According to the following test case:
// Android does not currently support: brown. The color yellow is used when a name is not recognised.
// iOS does not currently support: aqua, fuchsia, lime and maroon. The color black is used when a name is not recognised.
// stripped for tableview background color still to be tested
var webcolor = [
'black', 'gray', 'darkgray', 'lightgray', 'white', 'red', 'green', 'blue', 'cyan', 'yellow',
'magenta', 'orange', 'purple', 'brown', 'transparent',
'aqua', 'fuchsia', 'lime', 'maroon', 'pink', 'navy', 'silver', 'olive', 'teal'];
var webcolorPointer = 0;
var win = Ti.UI.createWindow({
backgroundColor: webcolor[webcolorPointer],
exitOnClose: true,
fullscreen: false,
layout: 'vertical',
title: 'Webcolor Demo'
});
var label = Ti.UI.createLabel({
backgroundColor: 'white',
text: webcolor[webcolorPointer]
});
webcolorPointer++;
win.add(label);
// click window to iterate through color array
win.addEventListener('click', function(e){
e.source.backgroundColor = webcolor[webcolorPointer];
label.text = webcolor[webcolorPointer];
webcolorPointer++;
if(webcolorPointer === webcolor.length){
webcolorPointer = 0;
}
});
win.open();
Pull request pending.
PR merged https://github.com/appcelerator/titanium_mobile/pull/2033
Verified fixed with SDK 2.1.0.v20120618102300 on iPod 4th Gen