何时加载并设置min / maxTrackImages以使它们出现在IB中

时间:2015-03-04 19:45:03

标签: ios cocoa-touch uislider

我在UISlider的子类中有以下代码。我想加载图像并让它们出现在界面构建器中。

- (void)prepareForInterfaceBuilder
{
    [self sharedInit];
}

- (void)sharedInit
{
    UIImage *minImage = [[UIImage imageNamed:@"MinSliderImage"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 1, 0, 0)];
    UIImage *maxImage = [[UIImage imageNamed:@"MaxSliderImage"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 1)];
    UIImage *thumbImage = [UIImage imageNamed:@"SliderThumb"];

    [self setMinimumTrackImage:minImage forState:UIControlStateNormal];
    [self setMaximumTrackImage:maxImage forState:UIControlStateNormal];
    [self setThumbImage:thumbImage forState:UIControlStateNormal];
}

运行应用程序时看起来正确,但IB上没有显示图像。

enter image description here

通过创建IBInspectable Image属性并加载相同的图像,可以实现所需的效果。引导我相信我在错误的时间加载了immages。

- (void)setMinimumTrackImage:(UIImage *)minImage
{
    UIImage *img = [minImage resizableImageWithCapInsets:UIEdgeInsetsMake(0, 1, 0, 0)];
    [self setMinimumTrackImage:img forState:UIControlStateNormal];
}

- (void)setMaximumTrackImage:(UIImage *)maxImage
{
    UIImage *img = [maxImage resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 1)];
    [self setMaximumTrackImage:img forState:UIControlStateNormal];
}

- (void)setCurrentThumbImage:(UIImage *)thumbImage
{
    [self setThumbImage:thumbImage forState:UIControlStateNormal];
}

enter image description here

所以我的问题是。如何对图像进行硬编码,设置min / maxTrackImages,并将它们显示在IB上?

1 个答案:

答案 0 :(得分:0)

您可以尝试在.h文件中将IB_DESIGNABLE放在类声明之前。这将告诉Interface Builder在故事板中以运行应用程序时的方式呈现您的UISlider。

IB_DESIGNABLE
@interface YourCostumeSlider : UISlider