我有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"]];
}
在我的代码中,我将其添加为子视图。
我的问题是,有没有办法让它更短,因为它可以维护。
答案 0 :(得分:0)
如果您使用的名称类似于 - Circle1.png
,Circle2.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的东西??。图像相同,没有其他属性..它可能有效