使用iOS 7.1在UIImageView的子类中使用setter/getter进行区分行为

Viv*_*ier 5 objective-c uiimageview ios ios7.1

自iOS 7.1 beta 5以来,我的小插件有一个奇怪的错误:链接

我的插件是一个子类UIImageView,在这个类的内部我有另一个UIImageView调用img.

我重写了setter和getter image:

- (void)setImage:(UIImage *)image{

    self.img.image = image;

}

- (UIImage *)image{

    return _img.image;

}
Run Code Online (Sandbox Code Playgroud)

所以NSLog(@"%@",self.image)回来_img.image,我很好.

NSLog(@"%@",[super image])回来(null),我很好.

问题是iOS 7.0 self不显示图像,但self显示iOS 7.1 _img.image.

在视觉上,我不想要一个图像self,我想要与iOS 7.0相同的行为.

所以我尝试另一件事要理解,如果我使用这个setter/getter:

- (void)setImage:(UIImage *)image{

    [super setImage:[UIImage imageNamed:@"becomeapanda_tumblr_com_portrait"]];

}

- (UIImage *)image{

    return [UIImage imageNamed:@"becomeapanda_tumblr_com"];

}
Run Code Online (Sandbox Code Playgroud)

在iOS 7.0中,self显示此图像"becomeapanda_tumblr_com_portrait",但在iOS 7.1中self显示此图像"becomeapanda_tumblr_com".

如果我能帮助理解为什么iOS 7.1我的插件没有相同的行为,这可能会很好!

小智 -1

您好,尝试一下,您忘记将 [self animaticToScaleAspectFit] 放入您的方法中,

    - (void)animateToScaleAspectFitToFrame:(CGRect)frame WithDuration:(float)duration afterDelay:(float)delay{

    if (![self uiimageIsEmpty]) {
        [self initToScaleAspectFitToFrame:frame];

        [UIView animateWithDuration:duration delay:delay options:UIViewAnimationOptionAllowUserInteraction
                         animations:^{
                             [self animaticToScaleAspectFit];
                         } completion:nil];
    }else{
        [self animaticToScaleAspectFit];
        NSLog(@"ERROR, UIImageView %@ don't have UIImage",self);
    }  
}
Run Code Online (Sandbox Code Playgroud)