Почему кнопки фоновых изображений выпрямляются?
У меня есть приложение, в котором у меня есть боковое меню. В боковом меню остальные кнопки выглядят нормально, но две кнопки странно растягиваются. скриншот прилагается.
Вот так я настраиваю изображения кнопок.
- (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 это изображает это поведение. Я добавил только одно ограничение (ширину) в табличное представление. Используемая здесь ячейка uitableview (custom) имеет все обычные ограничения ведущего пространства, вертикального пространства, выравнивания по центру и т. Д. Есть мысли?
Обновление: я установил цвет bg на красный, и оказалось, что две кнопки в вопросах изменяются в гораздо меньшем и, возможно, более широком виде. Почему это случилось?
3 ответа
Я бы порекомендовал вам, чтобы использовать button.image
вместо button.backgroundImage
, Похоже, установка backgroundImage для UIButton
не может справиться с contentMode
вашего изображения, потому что оно всегда растягивает UIImage
к тому же размеру, что и UIButton
,
Если вы добавите UIImage
только на property
image
Вы можете изменить положение изображения внутри UIButton
изменяя contentEdgeInsets
вручную или внутри Interface Builder
,
На всякий случай, если вы хотите установить UIImage
также как и NSString
для тебя UIButton
Я бы создал собственный класс типа UIButton
с UILabel
а также UIImage
и расположить их внутри Interface Builder
,
Согласно "Каталогу пользовательского интерфейса UIKit", главе "Кнопки", раздел "Изображения":
Поле Background (currentBackgroundImage) позволяет указать изображение, которое будет отображаться за содержимым кнопки, и заполнить весь кадр кнопки. Указанное вами изображение будет растягиваться, чтобы заполнить кнопку, если оно слишком маленькое. Он будет обрезан, если он слишком большой.
Таким образом, вам нужно установить размер всех фоновых изображений равным размеру кнопки.
Обновить Или убедитесь, что ваши ограничения настроены так, чтобы размер кнопки был правильным.
Ладно, ребята, я не совсем понимаю, почему это решило проблему, но это так и есть.
1) Я использовал setImage, а не setBackgroundImage.
2) Я удалил суффикс.png из имени изображения.
3) Я очистил проект и перезагрузил симулятор.
4) Это сработало.
Вероятно, в кеше сохранились предыдущие изображения, содержащие только что? и я символ, который сделал размер кнопки в соответствии с размером изображения, но я не уверен. Если кто-то еще может опубликовать лучшее объяснение этого, я бы пометил его как Ответ