2015-09-08 2 views
1

Я искал, но я не нашел для этого решения, у меня есть табличное представление с uitableviewcell. Для ячейки мне нужно применить этот пользовательский разделитель:Пользовательский разделитель UITableViewCell исчезает во время прокрутки ios8

UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(90, self.contentView.frame.size.height, 80, 1)]; 

lineView.backgroundColor = [UIColor lightGrayColor]; 
[self.contentView addSubView:lineView]; 

и разделитель отображается правильно, теперь, я не знаю, почему, если я прокручивать среда быстро вверх и вниз Tableview, сепаратор исчезают на определенной ячейке. Я попытался установить:

- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 

    UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(90, self.contentView.frame.size.height, 80, 1)]; 

    lineView.backgroundColor = [UIColor lightGrayColor]; 

    [self.contentView addSubview:lineView]; 
} 

любое предложение? спасибо

+1

Пробовали ли вы UIView * lineView = [[UIView Alloc ] initWithFrame: CGRectMake (90, self.contentView.frame.size.height - 1, 80, 1)]; ? –

+0

не добавляйте никаких подзонов в метод 'layoutSubviews', добавьте представление во время инициализации и установите его фрейм в' layoutSubviews' –

+0

@ArbenPnishi спасибо, я думаю, что настройка self.contentView.frame.size.height - 1 решила мою проблему! не думал о высоте рамки! – alessioarsuffi

ответ

1

layoutSubviews метод не то место для добавления subviews, потому что он вызывает много раз. Добавьте этот под просмотр в метод awakeFromNib.

Кроме того, кажется, что ваша линия из клетки, потому что вы используете self.contentView.frame.size.height попробовать self.contentView.frame.size.height - 1

Кроме того попытаться проверить его на устройстве, иногда Тренажер имеет подобные графические ошибки.

0

у не показали никакого кода о том, как у создаем клетки, но я дам пример пример и может сделать, как это, например,

//during initialisation 
- (instancetype)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if(self) 
    { 
     [self setUpCell]; 
    } 
    return self; 
} 

- (void)awakeFromNib 
{ 
    [self setUpCell]; 
} 

//hear add the views only once 
- (void)setUpCell 
{ 
    //hear add the all views 
    UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(90, self.contentView.frame.size.height - 1, 80, 1)]; 
    lineView.backgroundColor = [UIColor greenColor]; 
    lineView.tag = 123; //set its tag to access it in "layoutsubviews" 
    [self.contentView addSubview:lineView];  
} 

//this method may be called repeatedly, just set the frames of the subviews hear 
- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 
    UIView *lineView = [self.contentView viewWithTag:123]; //get the subview with tag 
    lineView.frame = CGRectMake(90, self.contentView.bounds.size.height - 1,self.contentView.bounds.size.height - 1, 1); 
} 
Смежные вопросы