1

我有一个应用程序,其中有一个侧面菜单。在侧面菜单中,其余按钮看起来不错,但有两个按钮奇怪地伸展。截屏附上截图。

这就是我设置按钮图像的方式。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    static NSString *simpleTableIdentifier = @"SimpleTableItem";

    RearViewTableViewCell *cell = [self.tableViewSideMenu dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if(cell == nil)
    {

        NSArray *cellView = [[NSBundle mainBundle] loadNibNamed:@"RearViewTableViewCell" owner:nil options:nil];
        cell = (RearViewTableViewCell *)[cellView objectAtIndex:0];
        cell.btnItemSelector.tag = indexPath.row;
        [cell.btnItemSelector setBackgroundImage:[UIImage imageNamed:[buttonUnselect objectAtIndex:indexPath.row]] forState:UIControlStateNormal];
        [cell.btnItemSelector setBackgroundImage:[UIImage imageNamed:[buttonSelect objectAtIndex:indexPath.row]] forState:UIControlStateHighlighted];
        [cell.btnItemSelector addTarget:self action:@selector(btnMenuItemTapped:) forControlEvents:UIControlEventTouchUpInside];
        cell.selectionStyle =UITableViewCellSelectionStyleNone;

    }
    return cell;

}

我是自适应布局的新手。它会引起问题吗?在 iphone 5s 上它运行良好,但在 iphone 6 上它正在描述这种行为。我只向 tableview 添加了一个约束(宽度)。我在这里使用的 uitableviewcell(自定义)具有前导空间、垂直空间、中心对齐等所有常规约束。有什么想法吗?

更新:我将背景颜色设置为红色,结果显示有问题的两个按钮正在调整为更小且可能更宽的视图。为什么会这样?更新

4

3 回答 3

1

根据“UIKit 用户界面目录”、“按钮”一章、“图像”部分

背景 (currentBackgroundImage) 字段允许您指定显示在按钮内容后面的图像并填充按钮的整个框架。如果您指定的图像太小,它将拉伸以填充按钮。如果它太大,它将被裁剪。

因此,您需要将所有背景图像的大小设置为等于按钮的大小。

更新或确保您的约束已配置,以便按钮大小正确。

于 2015-01-07T13:46:21.943 回答
1

我会建议你使用,button.image而不是button.backgroundImage. 看起来将 backgroundImage 设置为UIButton无法处理contentMode您的图像,因为它总是将 拉伸UIImage到与UIButton.

如果您在UIImage上添加 ,property image您可以UIButton通过手动更改contentEdgeInsets或在Interface Builder.

以防万一您想UIImageNSStringUIButtonUIButton.UILabelUIImageInterface Builder

于 2015-01-09T09:39:11.757 回答
0

好吧,伙计们,我不太明白为什么这解决了这个问题,但它确实解决了问题。

1) 我使用 setImage 而不是 setBackgroundImage。

2)我从图像名称中删除了后缀 .png。

3)我清理了项目并重置了模拟器。

4)它工作。

可能是缓存中仍然有以前的图像只包含 ? 和 i 符号使按钮根据图像大小调整大小,但我不能确定。如果其他人可以对此发表更好的解释,我会将其标记为答案

于 2015-01-09T09:30:50.967 回答