2013-03-21 2 views
0

Я искал, как это сделать, но кроме оснований создания собственной ячейки таблицы, я не могу понять, как это сделать. То, что я пытаюсь сделать это трудно описать, так что я сделал это изображение, чтобы попытаться объяснить:Отображение «загрузочной панели» в ячейке просмотра таблицы

image

Так что программа в основном делает это играет песни, возможные в то же время, после того, Подождите. Вся эта песня wait + вызывается в моей программе как кий. У каждой метки есть своя ячейка таблицы, которая показывает, сколько из нее играло. Это та часть, с которой я борюсь. Лучший способ, с помощью которого я мог бы показать, сколько играл, - это как на фотографии, синим цветом, представляющим, сколько из песни было сыграно, зеленый цвет, представляющий, сколько времени ожидания сыграло, и все, что представляет, сколько кий сыграл. Я не могу понять, как создать ячейку просмотра таблицы, в которой я могу создать анимированную панель (б/у песня играет) с переменным количеством зеленой/синей области. Может ли кто-нибудь помочь?

Если какое-либо из этих вопросов неясно или запутанно, прокомментируйте, чтобы я мог уточнить.

+0

Я думаю, я не понимаю, «сколько времени ожидания сыграло» – AMayes

+0

@AMayes Таким образом, общее время, которое занимает Cue, - это время ожидания + длина песни. Полоса показывает, сколько общего времени было использовано, а зеленый/синий - какая часть этого времени - это ожидание, а какая часть музыки. –

+0

Вы можете попробовать использовать пользовательский слайдер. Их довольно легко настроить. – AMayes

ответ

1

Вы можете установить backgroundView свойство клетки для пользовательского подкласса UIView, который имеет drawRect метод, аналогичный этому:

- (void)drawRect:(CGRect)rect { 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0); 
    CGContextFillRect(context, rect); 
    CGRect blueRect = CGRectMake(0, 0, self.bluePercentage/100.0*rect.size.width, rect.size.height); 
    CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1.0); 
    CGContextFillRect(context, blueRect); 
    CGRect greenRect = CGRectMake(0, 0, self.greenPercentage/100.0*rect.size.width, rect.size.height); 
    CGContextSetRGBFillColor(context, 0.0, 1.0, 0.0, 1.0); 
    CGContextFillRect(context, greenRect); 
} 

Вы получаете точку: заправить белым первым (фон по умолчанию черный) , покрасьте синюю полосу над ней, красите зеленую полосу над синей линией. bluePercentage и redPercentage - это свойства, которые вам нужно будет установить самостоятельно.

Кроме того, каждый раз, когда вы обновляете прогресс, вам нужно позвонить [cell setNeedsDisplay], чтобы передать ячейке перерисовать индикатор выполнения.

+0

Хорошо, но что именно передается drawRect? Кроме того, я просмотрел библиотеку Core Graphics, и я немного запутался в том, что такое CGContext. –

+0

Также, как создать экземпляр UIView? Метод init вызывает CGRect, так что я должен установить? –

+1

'cell.backgroundView = [[YourCellBackgroundViewClass alloc] init];' кажется достаточным. –

Смежные вопросы