我有一个应用程序,我有一个侧面菜单。在侧面菜单中,其余的按钮看起来很好,但两个按钮很奇怪。附上屏幕截图。
这就是我设置按钮图像的方式。
- (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(自定义)具有前导空间,垂直空间,中心对齐等所有常规约束。任何想法?
更新:我将bg颜色设置为红色,结果显示问题中的两个按钮被调整为更小和更小。可能更广阔的视野为什么会发生这种情况?
答案 0 :(得分:1)
根据"UIKit User Interface Catalog", "Buttons" chapter, "Images" section:
Background(currentBackgroundImage)字段允许您指定要在按钮内容后面显示的图像并填充按钮的整个帧。如果按钮太小,您指定的图像将会拉伸以填充按钮。如果它太大,它将被裁剪。
因此,您需要将所有背景图像的大小设置为等于按钮的大小。
更新或确保配置约束以使按钮大小正确。
答案 1 :(得分:1)
我建议您使用button.image
代替button.backgroundImage
。看起来像设置UIButton
的backgroundImage无法处理图片的contentMode
,因为它始终将UIImage
拉伸到与UIButton
相同的大小。
如果您在UIImage
property
上添加image
,可以通过手动或内部更改UIButton
来更改contentEdgeInsets
内图片的位置Interface Builder
。
如果您想为UIImage
设置NSString
和UIButton
,我会创建一个类型为UIButton
且UILabel
的类。 1}}和UIImage
并将它们布置在Interface Builder
。
答案 2 :(得分:0)
好吧,伙计们,我不知道为什么这样才解决了这个问题,但事实确实如此。
1)我使用了setImage而不是setBackgroundImage。
2)我从图像名称中删除了后缀.png。
3)我清理了项目并重置了模拟器。
4)它奏效了。
可能是缓存仍然有以前的图像只包含?和我按照图像大小调整按钮大小的符号,但我无法确定。如果其他人可以发布更好的解释,我将其标记为答案