Почему кнопки фоновых изображений выпрямляются?

У меня есть приложение, в котором у меня есть боковое меню. В боковом меню остальные кнопки выглядят нормально, но две кнопки странно растягиваются. Скриншот скриншот прилагается.

Вот так я настраиваю изображения кнопок.

- (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 только на propertyimage Вы можете изменить положение изображения внутри UIButton изменяя contentEdgeInsets вручную или внутри Interface Builder,

На всякий случай, если вы хотите установить UIImage также как и NSString для тебя UIButtonЯ бы создал собственный класс типа UIButton с UILabel а также UIImage и расположить их внутри Interface Builder,

Согласно "Каталогу пользовательского интерфейса UIKit", главе "Кнопки", раздел "Изображения":

Поле Background (currentBackgroundImage) позволяет указать изображение, которое будет отображаться за содержимым кнопки, и заполнить весь кадр кнопки. Указанное вами изображение будет растягиваться, чтобы заполнить кнопку, если оно слишком маленькое. Он будет обрезан, если он слишком большой.

Таким образом, вам нужно установить размер всех фоновых изображений равным размеру кнопки.

Обновить Или убедитесь, что ваши ограничения настроены так, чтобы размер кнопки был правильным.

Ладно, ребята, я не совсем понимаю, почему это решило проблему, но это так и есть.

1) Я использовал setImage, а не setBackgroundImage.

2) Я удалил суффикс.png из имени изображения.

3) Я очистил проект и перезагрузил симулятор.

4) Это сработало.

Вероятно, в кеше сохранились предыдущие изображения, содержащие только что? и я символ, который сделал размер кнопки в соответствии с размером изображения, но я не уверен. Если кто-то еще может опубликовать лучшее объяснение этого, я бы пометил его как Ответ

Другие вопросы по тегам