2013-12-11 32 views
0

我有一个UIImageView子类,并从URL中抓取图像。在不启动子类的情况下设置参数?

要初始化你的类中使用initWithFrame: andURL:

但是,我有我想可以设置,而无需创建10种不同的自定义init方法的其他选项。在子类中,还有大约5个其他变量,如果我不需要,我不想创建不必要的init。很抱歉,如果这是很难跟踪 - 看到这个例子:

CustomImageView *imageView = [[CustomImageView alloc] initWithFrame:frame andURL:url]; 
[imageView setSize:x]; 
[imageView setColor:y]; 
//I want the user to be able to set other variables to add parameters to the URL, 
// but I don't want to have initWithFrame: andURL: andSize: or initWithFrame: andURL: 
// andSize: andColor: 

有没有一种方式来加载这些参数的图像,而无需使用添加(void)loadImage子类?对不起,如果这是令人困惑,任何帮助赞赏,谢谢。

+0

是什么'loadImage'吗? – Macondo2Seattle

+0

@BlackRider loadImage什么都不做 - 我看到在加载URL之前是否可以设置变量。 – 1789040

+0

使用标准的init方法而不是initWithFrame:andURL :.然后将所有值稍后传递给子类上的属性。准备好显示图像时,请调用loadImage。 (你需要告诉它以某种方式显示图像。) – user523234

回答

1

在图像视图子类中添加的属性:

@property (nonatomic, strong) NSURL *imageUrl;

现在,您可以设置URL在任何时间:

[imageView setImageUrl:url];

+0

我应该删除'initWithFrame:andURL:'吗? – 1789040

+0

@ 1789040:如果需要变量来初始化该类,那么显然应该在初始化程序中使用该变量。如果不是,那么这是个人喜好的问题。一个好的经验法则是,创建实例时最有可能想要设置的选项是什么?这样你就可以压缩'init;富=; bar =;'更简洁的'initWithFoo:Bar:'。 – Chuck

+0

那么你需要初始化'UIImageView'并设置它的框架。但是您可以删除自定义初始化程序,只需重新设置URL即可。 – runmad

相关问题