ios – UITableViewCellStyleSubtitle单元格的分隔线不占用整个
发布时间:2020-12-14 19:31:15 所属栏目:百科 来源:网络整理
导读:我在 GitHub为我的问题准备了 a simple test project. 使用UITableViewCellStyleSubtitle类型的单元格(在Xcode Interface Builder中称为字幕)时 – 由于某种原因水平线未到达屏幕的左侧: 在上面的屏幕截图中,您可以看到“空单元格”中的分隔线占据了整个宽
我在
GitHub为我的问题准备了
a simple test project.
使用UITableViewCellStyleSubtitle类型的单元格(在Xcode Interface Builder中称为字幕)时 – 由于某种原因水平线未到达屏幕的左侧: 在上面的屏幕截图中,您可以看到“空单元格”中的分隔线占据了整个宽度. 首先,我认为图标(大小:46 x 46 pixels)不适合细胞,并试图增加行高,但这没有帮助. 此外,我已尝试将自定义插入设置为自定义,左侧为0像素(表视图和MyCell),但左侧仍有间隙: 这是我TableViewController.m的源代码: - (void)viewDidLoad { [super viewDidLoad]; self.items = [[NSMutableArray alloc] initWithArray:@[ @{@"title": @"Title 1",@"subtitle": @"Sub Title 1",@"icon": @"signal4.png"},@{@"title": @"Title 2",@"subtitle": @"Sub Title 2",@"icon": @"signal1.png"},@{@"title": @"Title 3",@"subtitle": @"Sub Title 3",@"icon": @"signal2.png"},@{@"title": @"Title 4",@"subtitle": @"Sub Title 4",@"icon": @"signal3.png"} ]]; } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.items.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyCell" forIndexPath:indexPath]; NSDictionary* item = [self.items objectAtIndex:indexPath.row]; cell.textLabel.text = item[@"title"]; cell.detailTextLabel.text = item[@"subtitle"]; UIImage* icon = [UIImage imageNamed:item[@"icon"]]; [cell.imageView setImage:icon]; return cell; } 更新:这个答案的源代码最终帮助了我: -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { // Remove seperator inset if ([cell respondsToSelector:@selector(setSeparatorInset:)]) { [cell setSeparatorInset:UIEdgeInsetsZero]; } // Prevent the cell from inheriting the Table View's margin settings if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) { [cell setPreservesSuperviewLayoutMargins:NO]; } // Explictly set your cell's layout margins if ([cell respondsToSelector:@selector(setLayoutMargins:)]) { [cell setLayoutMargins:UIEdgeInsetsZero]; } } /* -(void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; // Force your tableview margins (this may be a bad idea) if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) { [self.tableView setSeparatorInset:UIEdgeInsetsZero]; } if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) { [self.tableView setLayoutMargins:UIEdgeInsetsZero]; } } */ 解决方法
将表视图分隔符插入添加到零.不只是表视图单元格.
在cellForRowAtIndexPath中添加此代码: -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { //.... if ([[[UIDevice currentDevice]systemVersion]floatValue]>=8.0) { cell.layoutMargins = UIEdgeInsetsZero; cell.preservesSuperviewLayoutMargins = NO; } } 与您的代码集成: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyCell" forIndexPath:indexPath]; if ([[[UIDevice currentDevice]systemVersion]floatValue]>=8.0) { cell.layoutMargins = UIEdgeInsetsZero; cell.preservesSuperviewLayoutMargins = NO; } NSDictionary* item = [self.items objectAtIndex:indexPath.row]; cell.textLabel.text = item[@"title"]; cell.detailTextLabel.text = item[@"subtitle"]; UIImage* icon = [UIImage imageNamed:item[@"icon"]]; [cell.imageView setImage:icon]; return cell; } 查看预览: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |