2016-03-15 3 views
0

Мои ячейки таблицы видны полностью программно (я пытаюсь научиться создавать приложение с нуля без использования раскадровки), и ширина ячеек становится испорченной.Ширина UITableViewCell не регулируется динамически на основе типа устройства ios

Вот скриншот http://imgur.com/ki6txqg того, что камера выглядит в iPhone 6 Plus. Я пытаюсь установить ячейку так, чтобы UIView в ячейке (self.view) настраивался автоматически, чтобы он заполнял весь экран. Я не уверен, почему ширина остается неподвижной. Любые советы будут очень признательны.

-(instancetype)initWithTweet:(PCRTweet *)tweet reuseIdentifier:(NSString *)reuseIdentifier 
{ 
self = [super init]; 

if (self) { 
    _tweet = tweet; 

    reuse = reuseIdentifier; 

    CGSize cellSize = self.contentView.frame.size; 

    CGRect backgroundView = CGRectMake(10.f, 5.f, (cellSize.width-20.f), (cellSize.height + 90.f)); 


    self.view = [[UIView alloc] initWithFrame:backgroundView]; 
    self.view.backgroundColor = [UIColor whiteColor]; 
    self.view.layer.cornerRadius = 8; 
    self.view.layer.masksToBounds = YES; 
    self.view.layer.borderWidth = 1.0f; 
    self.view.layer.borderColor = background_color_gray.CGColor; 
    self.view.layer.masksToBounds = NO; 

    [self.contentView addSubview:self.view]; 

    CGRect picView = CGRectMake(0.f, 0.f, 65.f, 65.f); 

    self.contentView.backgroundColor = background_color_gray; 

} 

return self; 
} 

enter image description here

+0

Вы используете ограничения на вашем столе? –

+0

use self.view.frame.size.width-20.f CGRect backgroundView = CGRectMake (10.f, 5.f, (self.view.frame.size.width -20.f), (cellSize.height + 90.f)); –

+1

Я предлагаю вам изменить фрейм в layourSubviews или использовать ограничение. – childrenOurFuture

ответ

0

Попробуйте использовать автоматическое изменение размера для вашего вида.

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
2

Пожалуйста, прочтите пункты на следующий контрольный список, чтобы убедиться, что вы делаете это все в порядке:

- [] Вы проверили, что ваш contentView динамически меняется?

- [] Вы пробовали программировать ограничения?

- [] Попробуйте использовать ограничения на наибольшем зрения: будет автоматически регулировать относительные взгляды

Помимо этого, вы можете автоматически изменение размера для вашего кадра.

+0

Как проверить, изменяется ли контент-просмотр? –

+0

Поскольку вы не используете раскадровки + ограничения, вы можете попробовать просто распечатать координаты и размеры фреймов. Немного хакерский способ, но стоит попробовать. – djay

+0

, когда я зарегистрировал размеры, ширина составляет 320, независимо от типа устройства –

1

Вы попробуйте этот метод два UITableView делегата в таблице класса представления

для динамической Высоты

#pragma mark - UITableView Delegates 

-(CGFloat)tableView:(UITableView)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath)indexPath { 

    return 44.0; 
} 

-(CGFloat)tableView:(UITableView)tableView heightForRowAtIndexPath:(NSIndexPath)indexPath { 

    return UITableViewAutomaticDimension; 
} 

для ширины (Получить ширину вида контроллера и принять к backgroundView)

CGSize viewWidth = self.contentView.superview.superview.superview.superview.frame.size; 

// self.contentView.superview -> return UITableViewCell 
// self.contentView.superview.superview -> return UITableViewWrapperView 
// self.contentView.superview.superview.superview -> return UITableView 
// self.contentView.superview.superview.superview.superview -> return View Controller 

CGRect backgroundView = CGRectMake(10.f, 5.f, (viewWidth.width-20.f), (cellSize.height + 90.f)); 
+0

, которые не помогли. проблема связана с шириной не высотой –

+0

Я попытался добавить CGSize cellSize = self.contentView.superview.frame.size; но это ничего не меняет –

+0

Пожалуйста, попробуйте этот –

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