выделите часть ячейки при выборе - PullRequest
0 голосов
/ 22 ноября 2011

Я пытаюсь добавить нестандартный цвет в ячейку, когда она выделена.Для этого я создаю вид с нужным мне фоновым цветом и устанавливаю его как selectedBackgroundView для ячейки.

Все хорошо.

UIView *selectionView = [[UIView alloc] init];
[selectionView setBackgroundColor:[UIColor colorWithRed:(121/255.0) green:(201/255.0) blue:(209/255.0) alpha:1.0]];
[cell setSelectedBackgroundView:selectionView];

Мой вопрос, могу ли я изменить кадр selectedBackgroundView, чтобы он выделил только часть ячейки (если быть точным, я хочу, чтобы selectionBackroundView имелСмещение по оси X на 20 пикселей).

Есть ли простой способ сделать это?

Обновленный код:

UIView *selectionView = [[UIView alloc] init];
[selectionView setBackgroundColor:[UIColor clearColor]];
UIView *selectionSubView = [[UIView alloc] initWithFrame:(CGRectMake(20.0f, 0.0f, 300.0f, 72.0f))];
[selectionSubView setBackgroundColor:[UIColor colorWithRed:(121/255.0) green:(201/255.0) blue:(209/255.0) alpha:1.0]];

UIView *clearView = [[UIView alloc] initWithFrame:(CGRectMake(0.0f, 0.0f, 20.0f, 72.0f))];
[clearView setBackgroundColor: [UIColor clearColor]];

[selectionView addSubview: selectionSubView];
[selectionView addSubview: clearView];

[cell setSelectedBackgroundView: selectionView];

Похоже, это тоже не работает.Я добавил этот код в 'cellForRowAtIndexPath'

Заранее спасибо

Ответы [ 4 ]

1 голос
/ 22 ноября 2011

Вы можете сделать это так.

Вы создаете отдельный файл для UIView, как показано ниже.

TestView.m

- (id)initWithFrame:(CGRect)frame {

self = [super initWithFrame:frame];
if (self) {
    // Initialization code.
    [self setBackgroundColor:[UIColor clearColor]];
}
return self;
}


// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {

/* Draw a circle */
// Get the contextRef
CGContextRef contextRef = UIGraphicsGetCurrentContext();

// Set the border width
CGContextSetLineWidth(contextRef, 1.0);

// Set the circle fill color to GREEN
CGContextSetRGBFillColor(contextRef, 100.0, 255.0, 0.0, 1.0);

// Set the cicle border color to BLUE
CGContextSetRGBStrokeColor(contextRef, 0.0, 0.0, 255.0, 1.0);

// Fill the circle with the fill color
CGContextFillRect(contextRef, CGRectMake(20, 0, rect.size.width, rect.size.height));

// Draw the circle border
//CGContextStrokeRectWithWidth(contextRef, rect, 10);//(contextRef, rect);
}

И этот пользовательский вид можно использовать в качестве фонового представления для выбора ячеек, подобного этому.

    TestView *bgView = [[TestView alloc] initWithFrame:cell.frame]; // Creating a view for the background...this seems to be required.
cell.selectedBackgroundView = bgView;

Может быть, это поможет вам.

Спасибо,

Минеш Пурохит.

1 голос
/ 22 ноября 2011

Вы можете поместить меньший UIView в качестве подпредставления вашего selectionView и изменить цвет фона этого представления.

0 голосов
/ 22 ноября 2011

Имеет ли ячейка фиксированный размер и область выделения?

Если да, создайте изображение и используйте представление изображения в качестве selectedBackgroundView

0 голосов
/ 22 ноября 2011

Попробуйте установить размер кадра для selectionView, где x = 20. Я не уверен в этом, но я думаю, это должно работать для вашего сценария.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...