Почему [imageView RespondsToSelector: @selector (contentScaleFactor :)] всегда равно NO? - PullRequest
1 голос
/ 13 января 2011

Я установил базовую SDK 4.1 и цель развертывания ios = ios4.1. ContentScaleFactor доступен в iOS 4.0 и более поздних версиях.

if ( [imageView respondsToSelector: @selector (contentScaleFactor:)] == YES )
{
    imageView.contentScaleFactor = 1.0;
}

Почему я всегда получаю НЕТ?

Ответы [ 2 ]

5 голосов
/ 13 января 2011

Он не отвечает на contentScaleFactor:, поскольку contentScaleFactor является свойством со следующими средствами доступа:

- (CGFloat)contentScaleFactor
- (void)setContentScaleFactor:(CGFloat)

Нет другого метода с именем contentScaleFactor, который принимает один параметр (отмечены :).

Итак, доступны следующие селекторы: contentScaleFactor и setContentScaleFactor:.Вы, вероятно, ищете setContentScaleFactor:, именно так называется сеттер.

Измените свой код на этот:

if ( [imageView respondsToSelector:@selector(setContentScaleFactor:)] == YES )
{
    // Or as bbum says, use [imageView setContentScaleFactor:1.0];
    imageView.contentScaleFactor = 1.0;
}
2 голосов
/ 13 января 2011

Поскольку селектор contentScaleFactor: отличается от селектора contentScaleFactor, и ни один из них не соответствует селектору установщика свойств, который равен setContentScaleFactor:. Вам просто нужно сделать это:

if ([imageView respondsToSelector: @selector(contentScaleFactor)])
{
    imageView.contentScaleFactor = 1.0;
}

Обратите внимание, что : отсутствует в объявлении селектора. Кроме того, обратите внимание, что установка масштабного коэффициента на 1.0 не позволит использовать Retina Display.

...