IBOutlet UIImageView

时间:2012-05-21 05:45:16

标签: iphone ios xcode

我有30个这样的代码,具有相同的实现:

// .h

@interface ViewController : UIViewController{
IBOutlet UIImageView *circle;
IBOutlet UIImageView *circle2;
}
@property (nonatomic, retain) IBOutlet UIImageView *circle;
@property (nonatomic, retain) IBOutlet UIImageView *circle2;

// .m

@implementation ViewController

@synthesize circle;
@synthesize circle2;

- (void)viewDidLoad
{
circle = [[UIImageView alloc]
                      initWithImage:[UIImage imageNamed:@"Circle.png"]];
circle2 = [[UIImageView alloc]
                      initWithImage:[UIImage imageNamed:@"Circle.png"]];
}

在我的代码中,我将其添加为子视图。

我的问题是,有没有办法让它更短,因为它可以维护。

4 个答案:

答案 0 :(得分:0)

如果您使用的名称类似于 - Circle1.pngCircle2.png,那么您可以在循环中创建此循环。

像 -

for (int i = 0; i < imageCount ; i++ ) {
    circle = [[UIImageView alloc]
                  initWithImage:[UIImage imageNamed:[NSString stringWithFormat: @"Circle%d.png" , i]]];
}

答案 1 :(得分:0)

是否有一种模式可以将这些视图放在超级视图中?如果是这样,你可以使用一个转到30的for循环,并以编程方式创建视图并将它们添加到超级视图中。

例如:

   for (i = 0; i < 100; i++)
    {
        UIImageView* circle = [[UIImageView alloc]
                      initWithImage:[UIImage imageNamed:@"Circle.png"]];
        [self.view addSubview:circle];
    }

会添加您想要的100个图像视图。当然,您需要在循环中调整每个视图的位置,但这是一般的想法。

答案 2 :(得分:0)

您可以使用一个IBOutletCollection代替30 IBOutlets。您可能希望在每个UIImageView上设置标记,因此您仍然可以区分它们。

(这个答案假设你使用了一个笔尖。如果是的话,删除你在UIImageView中实例化viewDidLoad的行。)

答案 3 :(得分:0)

创建这个viewcontroller时传递帧作为参数。唯一改变rite的东西??。图像相同,没有其他属性..它可能有效