Подтвердить что ты не робот

Ios7 uitableviewcell изображение слева смещение

В iOS 6 и более ранних версиях uitableviewcell imageView располагался полностью налево с смещением 0. В iOS 7, хотя это было изменено, и теперь есть 15-точечное пространство. Я хотел бы позиционировать imageView, как в iOS 6. Я уже подклассифицировал uitableviewcell с помощью AKHighlightableAttributedCell, чтобы обработать приписанный текст, который не выделяется. Поэтому, основываясь на некоторых поисках, я добавил:

- (void) layoutSubviews
{
    [super layoutSubviews];
    // Makes imageView get placed in the corner
    self.imageView.frame = CGRectMake( 0, 0, 80, 80 );
}

Проблема в том, что все остальное все еще не репозиционируется, и поэтому я думаю, что должен быть лучший способ сделать это. Я читал, что некоторые люди упоминают использование отрицательного смещения, чтобы переместить все, но я не был уверен, как это будет работать с ограничениями, поскольку оно должно правильно масштабироваться для каждой ориентации. Есть ли более легкое решение для этого, которое мне не хватает? Спасибо.

4b9b3361

Ответ 1

Кажется, я делал это правильно. Недостатком части разделителя между полями была установка вставки на iOS 7. Вы можете сделать это в viewdidload или viewwillload и установить self.tableView.separatorInset = UIEdgeInsetsMake (0, 0, 0, 0);

Вам нужно добавить чек, если я запускаю iOS 7 или новее, так как это новое свойство, которое я считаю. Лучшим вариантом может быть установка его в раскадровке, выбирая представление таблицы, а затем устанавливая вставки разделителя от стандартного до пользовательского.

Вот метод layoutSubviews, который репозиционирует imageView и textLabel. Если у вас есть описание, добавьте это также.

- (void) layoutSubviews
{
    [super layoutSubviews];
    // Makes imageView get placed in the corner
    self.imageView.frame = CGRectMake( 0, 0, 80, 80 );

    // Get textlabel frame
    //self.textLabel.backgroundColor = [UIColor blackColor];
    CGRect textlabelFrame = self.textLabel.frame;

    // Figure out new width
    textlabelFrame.size.width = textlabelFrame.size.width + textlabelFrame.origin.x - 90;
    // Change origin to what we want
    textlabelFrame.origin.x = 90;

    // Assign the the new frame to textLabel
    self.textLabel.frame = textlabelFrame;
}