Если это просто вопрос объекта в [fixes count] / 2, имеющего непрозрачность 0,5, и объекта в [fixes count] -1, имеющего непрозрачность 1,0, и значения между ними равномерно распределены, то вы можете просто сделать что-то вроде:
[annotationView setAlpha:(float)indexOfPlacemark / [fixes count]];
Если у вас есть NSDate
, прикрепленный к каждому объекту, и вы хотите сделать расчет на основе этого, тогда вы можете сначала получить диапазон дат, например:
// set up
NSDate *startDate = [[fixes objectAtIndex:[fixes count]/2] date];
NSDate *endDate = [[fixes lastObject] date];
NSTimeInterval range = [endDate timeIntervalSinceDate:startDate];
// ...
// and later, for each object beyond halfway through the list:
NSTimeInterval timeSinceHalfway = [[fix date] timeIntervalSinceDate:startDate];
[annotationView setAlpha: 0.5 + (timeSinceHalfway / range) * 0.5];
Арифметика здесь относительно проста - если вы поделите время текущего объекта на общий диапазон, то вы получите число от 0 до 1, 0, если оно находится в начале диапазона, и 1, если оно в самом конце.Таким образом, если вы умножите это на 0,5, вы получите число от 0 до 0,5, к которому вы можете прибавить 0,5, чтобы получить число от 0,5 до 1.