Как я могу перевернуть изображение внутри UICollectionViewCell? - Swift 4 [дублировать]

Чтобы включить полное сообщение об ошибках, добавьте это в свой скрипт:

error_reporting(E_ALL);

Это приводит к появлению даже минимальных предупреждений. И на всякий случай:

ini_set('display_errors', '1');

заставит отображать ошибки. Это должно быть отключено на рабочих серверах, но не при разработке.

150
задан dandan78 11 October 2013 в 10:04
поделиться

13 ответов

Ни одно из данных решений не работало для меня. Если вы не установите начальное изображение в Storyboard, вы все равно можете изменить изображение кнопки с помощью setBackgroundImage.

Для вашего примера требуется только незначительное изменение.

NSURL *thumbURL2 = [NSURL URLWithString:@"http://example.com/thumbs/2.jpg"];
NSData *thumbData2 = [NSData dataWithContentsOfURL:thumbURL2];
UIImage *thumb2 = [UIImage imageWithData:thumbData2];
[btn2 setBackgroundImage:thumb2 forState:UIControlStateNormal];
[self.view addSubview:btn2];
1
ответ дан Alex 20 August 2018 в 19:20
поделиться

Проблема заключается в TintColor. По умолчанию iOS бросает синий цвет оттенка на каждую кнопку. Вы можете обойти его тремя способами.

  1. Изменить цвет оттенка. [button setTintColor:[UIColor blackColor]]; Это может окрасить ваше изображение так, как вы этого не хотите.
  2. Как и большинство других, установите фоновое изображение. [button setBackgroundImage:[UIImage...]];
  3. Добавьте кнопку UIImageView к вашей кнопке.

UIImageView * img = [[UIImageView alloc] initWithImage:[UIImage...]];

[button addSubView:img];

8
ответ дан DrDisc 20 August 2018 в 19:20
поделиться

Для быстрого:

    let aButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
8
ответ дан Esqarrouth 20 August 2018 в 19:20
поделиться

Это сработало для меня

[myButton1 setBackgroundImage:[UIImage imageNamed:@"phones.png"] forState:UIControlStateNormal];

Примечание: перед этим сделайте снимок переднего изображения.

2
ответ дан Josh Crozier 20 August 2018 в 19:20
поделиться
  • 1
    как удалить фоновое изображение пожалуйста !! – simbesi.com 10 July 2014 в 07:16

В iOS7 появился новый тип кнопки UIButtonTypeSystem NS_ENUM_AVAILABLE_IOS (7_0), // стандартная системная кнопка

Проверьте свой .xib-файл и тип кнопки изменения на Custom Look at the image [/g0]

Чтобы сделать это программно, добавьте эту строку в viewDidLoad:

[UIButton buttonWithType:UIButtonTypeSystem]; 
361
ответ дан Kyle Greenlaw 20 August 2018 в 19:20
поделиться
  • 1
    Как это можно сделать в коде? – djskinner 1 October 2013 в 17:04
  • 2
    [UIButton buttonWithType: UIButtonTypeSystem]; – avuthless 14 October 2013 в 14:02
  • 3
    Обратите внимание, что это решение устраняет цвет оттенка системы, но также приводит к жесткому переходу между выделенными и нормальными состояниями. Если вы хотите сохранить поведение системы, анимацию и т. Д., Но хотите избавиться от цвета оттенка, попробуйте [myUIButton setImage: [[UIImage imageNamed: @"myButtonImage"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal] forState: UIControlStateNormal]; (с типом кнопки, установленным в «Система» в IB). – JWK 19 December 2013 в 00:52
  • 4
    Спасибо, это было очень полезно. В нашем случае кнопка была даже обрезана до формы прозрачного PNG, а затем затемна. – g_pass 22 May 2014 в 01:16
  • 5
    Гизмы они спрятали, что хорошо, не так ли ?! – Maury Markowitz 4 September 2014 в 23:03

Есть хороший шанс, что изображение есть, и вы просто не можете его увидеть. Попробуйте изменить тип кнопки на UIButtonTypeCustom. Если это не работает, установите цвет фона кнопки на [UIColor clearColor];

20
ответ дан Mick MacCallum 20 August 2018 в 19:20
поделиться

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

Я искал решение, которое позволит мне установить изображения .normal и .selected UIControlState внутри раскадровку для исходного режима рендеринга, но внутри файла Swift не должно существовать строковых литералов относительно имен изображений.

В основном внутри вашего кода вы получите изображение, которое вы установили в своей раскадровке для .normal состояние и повторно отобразить его как .alwaysOriginal (То же самое для состояния .selected), тогда вы установите это изображение (которое теперь отображается как оригинальное и не будет затронуто оттенком) для соответствующего состояния (.normal и .selected) вашего UIButton.

Вот он:

// Get your .normal image (you set via your storyboard) and render it as original
let unselectedImage = yourButton.image(for: .normal)?.withRenderingMode(.alwaysOriginal)
// Set your normal image but this time rendered as original
yourButton.setImage(unselectedImage, for: .normal)
// Same for selected state
let selectedImage = yourButton.image(for: .selected)?.withRenderingMode(.alwaysOriginal)
yourButton.setImage(selectedImage, for: .selected)

Таким образом вы можете установить состояния изображения кнопок и, если имя изображения изменится, это не повлияет на ваш код.

1
ответ дан OhadM 20 August 2018 в 19:20
поделиться

делает цвет оттенка как clearcolor для всех четырех состояний (Default, Highlighted, selected, disabled) работал для меня.

0
ответ дан Rajashekar 20 August 2018 в 19:20
поделиться

Старая нить, но я хотел перезвонить, потому что у меня была такая же проблема. Проблема заключалась в том, что вы вызываете setImage, когда вы должны вызвать setBackgroundImage.

1
ответ дан Rob Schlackman 20 August 2018 в 19:20
поделиться

У меня была такая же проблема. На моей раскадровке у меня была кнопка без изображения.

Тогда я бы присвоил изображение в коде.

Пришел IOS 7, и у меня появилось много синих изображений.

Разрешение было простым, но сбивающим с толку. Если я назначаю любое изображение в раскадровке, а затем меняю изображение во время выполнения, он отлично работает.

Вы всегда должны указывать начальный образ на раскадровке, даже если вы не собираетесь его использовать.

6
ответ дан Ryan Heitner 20 August 2018 в 19:20
поделиться

Эта проблема называется синей проблемой цвета кнопки в xcode. Когда мы делаем кнопку по коду, кнопка показывает синий цвет оттенка по умолчанию. Это можно решить, назначив цвет оттенка черному или белым в соответствии с цветом вашей ячейки. Код:

UIImage *closebtnimg = [UIImage imageNamed:@"icon_uncheck.png"];
 UIImage *closebtnimg1 = [UIImage imageNamed:@"icon_checked.png"];

Custombutton *button = [Custombutton buttonWithType:UIButtonTypeRoundedRect];
[button setFrame:CGRectMake(52, 66, 25, 24)];
[button setBackgroundImage:closebtnimg forState:UIControlStateNormal];
[button setBackgroundImage:closebtnimg1 forState:UIControlStateSelected];
[button setTintColor:[UIColor whiteColor]];
[cell.contentView addSubview:button];
[button addTarget:self action:@selector(changeImage:)  forControlEvents:UIControlEventTouchUpInside];
1
ответ дан Shane 20 August 2018 в 19:20
поделиться

Кажется, что iOS 7 использует изображение, представленное как альфа-маску для отображения цвета оттенка кнопки. Изменение типа кнопки на UIButtonTypeCustom сделало трюк для меня (спасибо user716216!). Установка изображения в качестве фона не всегда работает, если у вас уже есть фоновое изображение, как и в моем случае.

53
ответ дан user3099609 20 August 2018 в 19:20
поделиться
  • 1
    Некоторое время боролся с этим: D спасибо чувак – deadlock 3 March 2014 в 12:13
  • 2
    Спасибо! Оригинальный пользователь забыл принять его в качестве ответа. – Tlaoz 25 March 2014 в 20:52
  • 3
    он работает для меня, но изменение системы не работает для моего дела, благодаря всем вашим вкладам – chings228 4 April 2014 в 12:24

Swift 3:

let image = UIImage(named: "my-image")
myButton.setImage(image.withRenderingMode(.alwaysOriginal), for: .normal)
14
ответ дан Wilson 20 August 2018 в 19:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: