2015-01-07 2 views
1

У меня есть приложение, в котором у меня есть боковое меню. В боковом меню остальные кнопки выглядят прекрасно, но две кнопки растягиваются странно. Screenshot скриншот прилагается.Почему фиксируются фоновые изображения кнопок?

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

- (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 (пользовательский), который имеет все обычные ограничения ведущего пространства, вертикального пространства, выравнивания по центру и т. Д. Любые мысли?

Update: я установить цвет Б.Г. на красный и получается две кнопки в вопросах изменения размера в гораздо меньшем & вероятно более широкий взгляд. Почему это произойдет? update

+0

Строки, которые все растягиваются, имеют текст с изображением? Я имею в виду для настроек у вас есть как изображение, так и текст. Если у него есть только изображение, проблема с ограничениями может вызвать проблему. Просто случайная мысль :) –

+0

Какая разница (ширина х высота) между изображениями? Если бы я должен был догадаться, я бы сказал, что два растянутых изображения не такие широкие, как другие. backgroundImages должны растягиваться, они находятся на фоне кнопки. –

+0

Это только изображение. Нет текста. Остальные кнопки прекрасно настраиваются с теми же ограничениями – NSNoob

ответ

1

Я бы порекомендовал вас использовать button.image вместо button.backgroundImage. Похоже, что установка backgroundImage на UIButton не может обрабатывать contentMode вашего изображения, потому что он всегда растягивает UIImage до того же размера, что и UIButton.

Если добавить UIImage только на propertyimage вы можете изменить положение изображения внутри UIButton путем изменения contentEdgeInsets вручную или внутри Interface Builder.

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

+1

Да, я сам это понял. Не уверен, почему фоновое изображение не работает, но setImage наверняка работает. – NSNoob

1

Согласно "UIKit User Interface Catalog", "Buttons" chapter, "Images" section:

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

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

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

+0

Можете ли вы добавить журнал для размера и размера изображения RearViewTableViewCell? –

+0

Не могли бы вы предоставить ограничения для кнопки ячейки? –

+0

здесь может быть что-то глупое. Я не совсем понимаю автозапуск, и я просто сделал быстрые шаги, чтобы приложение запускалось на iphone5s вперед – NSNoob

0

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

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

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

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

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

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

Смежные вопросы