i'm trying create component represent logo using code below:
- (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)}; (int = 0; < 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; (int = 0; < 16; i++) { ellipseview * v = (ellipseview*)[self viewwithtag:90000+i]; v.transform = cgaffinetransformmakescale(ratio, ratio); } }
i'm having hard time using cgaffinetransform
operations. hints on how handle multiple subviews inside view , keep them resizing group?
according uiview
reference:
transform
propertyspecifies transform applied receiver, relative center of bounds.
note "center of bounds". transform scales "content" of ellipseview
. since views not moved in layoutsubviews
, remain @ position , dots scaled.
do have use transforms?
you might change frame of views in createsubviews
.
as have coordinates, create cashapelayer
, build uibezierpath
ellipses according cgrect
array, add layer sublayer main view , scale that.
Comments
Post a Comment