2
我试图创建一个使用下面的代码,代表一个标志组件:多子视图和自动调整
- (void) createSubviews
{
CGRect path[] = {
CGRectMake(62.734375,-21.675000,18.900000,18.900000),
CGRectMake(29.784375,-31.725000,27.400000,27.300000),
CGRectMake(2.534375,-81.775000,18.900000,18.900000),
CGRectMake(4.384375,-57.225000,27.400000,27.300000),
CGRectMake(2.784375,62.875000,18.900000,18.900000),
CGRectMake(4.334375,29.925000,27.400000,27.300000),
CGRectMake(62.734375,2.525000,18.900000,18.900000),
CGRectMake(29.784375,4.475000,27.400000,27.300000),
CGRectMake(-21.665625,-81.775000,18.900000,18.900000),
CGRectMake(-31.765625,-57.225000,27.400000,27.300000),
CGRectMake(-81.615625,-21.425000,18.900000,18.900000),
CGRectMake(-57.215625,-31.775000,27.400000,27.300000),
CGRectMake(-81.615625,2.775000,18.900000,18.900000),
CGRectMake(-57.215625,4.425000,27.400000,27.300000),
CGRectMake(-21.415625,62.875000,18.900000,18.900000),
CGRectMake(-31.765625,29.925000,27.400000,27.300000)};
for (int i = 0; i < 16; i++) {
CGRect rect = CGRectApplyAffineTransform(path[i],
CGAffineTransformMakeScale(self.frame.size.width/213.0,
self.frame.size.height/213.0));
EllipseView * v = [[EllipseView alloc] initWithFrame:
CGRectOffset(rect, self.frame.size.width/2.0, self.frame.size.height/2)];
v.tag = 90000 + i;
v.tintColor = self.tintColor;
[self addSubview:v];
}
self.initialLenght = self.frame.size.width;
}
-(void) layoutSubviews
{
CGFloat ratio = self.frame.size.width/self.initialLenght;
for (int i = 0; i < 16; i++) {
EllipseView * v = (EllipseView*)[self viewWithTag:90000+i];
v.transform = CGAffineTransformMakeScale(ratio, ratio);
}
}
我使用CGAffineTransform
操作不好受。有关如何处理视图中的多个子视图并将它们重新设置为组的任何提示?