Я немного застрял с этим. Я хочу определить два значения непрозрачности int. Один должен увеличиваться, а другой уменьшаться на час.
Представьте себе, день состоит из 4 частей. Ночь, восход, день и закат. Каждая из частей изображена
два изображения, которые наложены. Ночь имеет изображение ночи и изображение восхода солнца. В полночь ночью изображение имеет непрозрачность, скажем, 255, а восход фактически невидим.
В то время как время истекает, например, В 4 часа ночи непрозрачность изображения снижается, а непрозрачность восхода увеличивается. В 5 часов ночь заканчивается с непрозрачностью изображения 0, в то время как изображение восхода имеет непрозрачность 255.
Итак, в каждой из 4 частей я хочу вычислить два значения непрозрачности, одно увеличивая, а другое уменьшая. В каждой части непрозрачность изменяется от 255 до 0, а с другой стороны - от 0 до 255.
Вот так я разделяю детали в часах
switch (hour) {
//night to sunrise
case 23: case 0: case 1: case 2: case 3: case 4:
[self setSetting:1 andOpacity:opacIn andOpacity:opacOut];
break;
//sunrise to day
case 5: case 6: case 7: case 8: case 9: case 10:
[self setSetting:1 andOpacity:opacIn andOpacity:opacOut];
break;
//day to sunset
case 11: case 12: case 13: case 14: case 15: case 16:
[self setSetting:4 andOpacity:opacIn andOpacity:opacOut];
break;
//sunset to night
case 17: case 18: case 19: case 20: case 21: case 22:
[self setSetting:2 andOpacity:opacIn andOpacity:opacOut];
break;
}
Я пробовал это с этим решением
int opacIn = hour * 10;
if (opacIn >= 230) {
opacIn += 25;
}
int opacOut = 255 - opacIn;
Проблема в том, что это определяет непрозрачность по отношению ко всему дню. Таким образом, он идет от 255 до 0 только один раз. Но я хочу, чтобы это было так для каждой части дня.
Есть идеи по этому поводу? Как я могу определить непрозрачность для каждой части?