Reputation: 329
I have a UIButton that has a UIImageView inside of it. For some reason the button is being displayed to the left of the images. Here is my code:
// Load resources
for (int x = 0; x < [self.gameOptions.categories count]; x++)
{
Category* category = [self.gameOptions.categories objectAtIndex:x];
UIButton* imageButton = [UIButton buttonWithType:UIButtonTypeCustom];
NSMutableArray* imageArray = [NSMutableArray new];
UIImageView* imageView = [[UIImageView alloc] init];
for (int i = 0; i < [category.resources count]; i++)
{
Resource* resource = [category.resources objectAtIndex:i];
[imageArray addObject:resource.targetImage];
}
imageView.animationDuration = [imageArray count] * 2;
imageView.animationImages = imageArray;
int count = [self.categoryButtons count];
imageView.frame = CGRectMake((count) * 50 + (count) * 10, 0, 50, 50);
[imageView startAnimating];
imageButton.adjustsImageWhenHighlighted = NO;
imageButton.tag = category.categoryId;
[imageButton addTarget:self action:@selector(imageSelect:) forControlEvents:UIControlEventTouchUpInside];
imageButton.frame = CGRectMake(imageView.frame.origin.x, imageView.frame.origin.y, imageView.frame.size.width, imageView.frame.size.height);
DLog(NSStringFromCGPoint(imageButton.layer.frame.origin));
DLog(NSStringFromCGPoint(imageView.frame.origin));
DLog(NSStringFromCGPoint(imageButton.frame.origin));
DLog(NSStringFromCGPoint(imageView.layer.frame.origin));
[imageButton addSubview:imageView];
[categorySelection setContentSize:CGSizeMake(imageView.frame.size.width, imageView.frame.size.height)];
[categorySelection addSubview:imageButton];
[self.categoryButtons addObject:imageButton];
[imageArray release];
[imageView release];
}
Upvotes: 0
Views: 315
Reputation: 2277
Each view has its own origin for its subviews.
so setting the ImageView.frame.origin of the same as the ButtonView.frame.origin isn't going to put them in the exact same place in respect to the superview.
so your imageView needs the origin set to values relative to the top left corner of your button.
imageButton.frame = CGRect(20.0, 20.0, 100.0, 100.0);
//then say you want the image to in the top left corner of the button
imageView.frame = CGRect(0.0, 0.0, 50.0, 50.0);
[imageButton addSubview:imageView];
Upvotes: 1