Meine Tabellenansicht Zeilen sind nicht dehnen, um die Bildansichten passen und die Bildansichten sind überlappend. Tabellenansicht dynamische Höhe Zeilen nach Inhalt Höhe
stellte ich die Tableview in automatischer Dimension und den Boden des Imageview zur
Es muss etwas fehlt Zelle einschränken, aber ich kann nicht herausfinden, was.
tableviewcell
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self.photoImageView = [[UIImageView alloc]init];
if (!(self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]))
return nil;
[self.contentView addSubview:self.photoImageView];
[self setConstraints];
return self;
}
-(void) layoutSubviews {
[super layoutSubviews];
self.nameLabel.preferredMaxLayoutWidth = self.nameLabel.frame.size.width;
[self setConstraints];
}
- (void) setConstraints {
UILayoutGuide *margins = self.contentView.layoutMarginsGuide;
self.photoImageView.translatesAutoresizingMaskIntoConstraints = false;
[self.photoImageView.topAnchor constraintEqualToAnchor:self.contentView.topAnchor constant:7].active = YES;
[self.photoImageView.bottomAnchor constraintGreaterThanOrEqualToAnchor:self.contentView.bottomAnchor constant:12].active = YES;
[self.photoImageView.leadingAnchor constraintEqualToAnchor:self.contentView.leadingAnchor constant:8].active = YES;
[self.photoImageView.heightAnchor constraintEqualToConstant:65].active = YES;
[self.photoImageView.widthAnchor constraintEqualToConstant:65].active = YES;
self.photoImageView.contentMode = UIViewContentModeScaleAspectFit;
self.photoImageView.layer.cornerRadius = self.photoImageView.frame.size.height/3;
self.photoImageView.layer.masksToBounds = YES;
}
Tableviewcontroller
- (void)viewDidLoad {
[super viewDidLoad];
//tableview
NSString *cellIdentifier = @"cell";
[self.businessesTableView registerClass:[YPBusinessTableViewCell class] forCellReuseIdentifier:cellIdentifier];
self.businessesTableView.delegate = self;
self.businessesTableView.dataSource = self;
self.refreshControl = [[UIRefreshControl alloc]init];
[self.businessesTableView addSubview:self.refreshControl];
[self.refreshControl addTarget:self action:@selector(refreshTable) forControlEvents:UIControlEventValueChanged];
UIEdgeInsets insets = self.businessesTableView.contentInset;
insets.bottom += YPInfiniteScrollActivityView.defaultHeight;
self.businessesTableView.contentInset = insets;
self.businessesTableView.estimatedRowHeight = 120;
self.businessesTableView.rowHeight = UITableViewAutomaticDimension;
UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
UIBarButtonItem *filter = [[UIBarButtonItem alloc] initWithTitle:@"Filter" style:UIBarButtonItemStylePlain target:self action:@selector(presentFilterView)];
negativeSpacer.width = -14;
[self.navigationItem setLeftBarButtonItems:@[negativeSpacer, filter] animated:NO];
[self setConstraints];
[self doSearch:@"test"];
[self setupInfiniteScrollView];
[self addSearchBar];
[self hideErrorView:self.errorView];
}
EDIT:
ich mein Problem herausgefunden wurde die Änderung dieser Linie
[self.contentView.bottomAnchor constraintGreaterThanOrEqualToAnchor:self.photoImageView.bottomAnchor constant:0].active = YES;
ich das b beschränken benötigt ottom anchor des contentView zum imageView und nicht umgekehrt.
Einziges Problem ist jetzt meine Tableview lädt zunächst mit sehr kleinen Zellen dann, wenn ich refresh die Bilder werden größer
Warum erstellen Sie nicht einfach eine wiederverwendbare Zelle in storyBoard und legen Sie alle Ihre Einschränkungen dort fest? –
Mögliches Duplikat von [UITableView Höhe dynamisch ändern] (http://stackoverflow.com/questions/14223931/change-uitableview-height-dynamic) –