为什么[imageView respondsToSelector:@selector(contentScaleFactor :)]总是等于NO?

时间:2011-01-13 17:25:41

标签: iphone objective-c uiview uiimageview

我设置了基础sdk 4.1和ios部署目标= ios4.1。 contentScaleFactor在iOS 4.0及更高版本中可用。

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

为什么我总是没有?

2 个答案:

答案 0 :(得分:5)

它不响应contentScaleFactor:,因为contentScaleFactor是一个属性,具有以下访问者:

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

没有其他名称为contentScaleFactor的方法接受单个参数(由:标记)。

因此,可用的选择器是contentScaleFactorsetContentScaleFactor:。您可能正在寻找setContentScaleFactor:,这就是调用setter的原因。

将您的代码更改为:

if ( [imageView respondsToSelector:@selector(setContentScaleFactor:)] == YES )
{
    // Or as bbum says, use [imageView setContentScaleFactor:1.0];
    imageView.contentScaleFactor = 1.0;
}

答案 1 :(得分:2)

因为选择器contentScaleFactor:与选择器contentScaleFactor不同,并且都不对应于属性设置器的选择器,即setContentScaleFactor:。你只需要这样做:

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

注意:已从选择器声明中消失。另请注意,将比例因子设置为1.0将无法利用Retina显示屏。