0

我得到了 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

4 回答 4

0

如果您使用 - Circle1.png,之类的名称Circle2.png,那么您可以使用 for 循环在循环中创建它。

就像是 -

for (int i = 0; i < imageCount ; i++ ) {
    circle = [[UIImageView alloc]
                  initWithImage:[UIImage imageNamed:[NSString stringWithFormat: @"Circle%d.png" , i]]];
}
于 2012-05-21T05:49:45.950 回答
0

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

例如:

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

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

于 2012-05-21T05:50:52.940 回答
0

您可以使用 1IBOutletCollection而不是 30 IBOutlets。不过,您可能希望在每个标签上都设置标签UIImageView,这样您仍然可以将它们区分开来。

(此答案假设您使用笔尖。如果是,请删除实例化UIImageViews的行viewDidLoad。)

于 2012-05-21T05:51:09.807 回答
0

在创建此视图控制器时,将框架作为参数传递。这是唯一改变仪式的事情??。图像是相同的,因为没有其他属性..它可能会起作用

于 2012-05-21T07:04:26.530 回答