Centrar elementos en ScrollViews
1) Crear una view que contendrá el scroll view (o intentar crearla por Storyboard)
2) Código de preparación. IMPORTANTE: LA LLAMADA HAY QUE HACERLA DESDE EL METODO -(void) viewDidLayoutSubviews {}:
[self.vMembers.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
UIScrollView * scrollMembers = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.vMembers.frame.size.width, self.vMembers.frame.size.height-8)];
[scrollMembers setScrollEnabled:YES];
[scrollMembers setBounces:NO];
[scrollMembers setShowsHorizontalScrollIndicator:NO];
int numberMembers = (int) [[LOApplicationModel sharedInstance].family count];
int i = 0;
int memberWidth = self.vMembers.frame.size.height-8;
int contentWidth = memberWidth * numberMembers;
if(contentWidth<self.vMembers.frame.size.width){
contentWidth =self.vMembers.frame.size.width;
}
UIView * contentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, contentWidth, scrollMembers.frame.size.height)];
[scrollMembers addSubview:contentView];
[self.vMembers addSubview:scrollMembers];
int initialPos = (contentView.frame.size.width/2) - (memberWidth * ((int)numberMembers/2));
if(numberMembers%2!=0){
initialPos -= (memberWidth/2);
}
if(initialPos<0){
initialPos = 0;
}
for (LOChild *child in [LOApplicationModel sharedInstance].family){
int ini = initialPos + (i*memberWidth);
LOFamilyMemberView *member = [[LOFamilyMemberView alloc] initWithFrame:CGRectMake(ini, 0, MAIN_SCROLLVIEW_FAMILY_MEMBERS_WIDTH, MAIN_SCROLLVIEW_FAMILY_MEMBERS_HEIGHT)];
[member.imgFamilyMember sd_setImageWithURL:child.photoURL placeholderImage:[UIImage imageNamed:@"profileBlank"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
if(image){
[member.imgFamilyMember setImage:image];
member.imgFamilyMember.layer.cornerRadius = member.imgFamilyMember.frame.size.height/2;
member.imgFamilyMember.layer.borderWidth=2.0;
member.imgFamilyMember.layer.borderColor=[[UIColor whiteColor] CGColor];
member.imgFamilyMember.clipsToBounds = YES;
}
}];
member.lblFamilyMember.text = child.name;
member.tag = i;
/* PARA HABILITAR EL TAP
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(openProfile:)];
[v addGestureRecognizer:tap];
*/
[contentView addSubview:member];
i++;
}
[scrollMembers setContentSize:CGSizeMake(contentWidth, scrollMembers.frame.size.height)];
[scrollMembers setNeedsLayout];
[scrollMembers layoutIfNeeded];
[contentView setNeedsLayout];
[contentView layoutIfNeeded];
[self.vMembers setNeedsLayout];
[self.vMembers layoutIfNeeded];