我有一个UIButton,里面有一个UIImageView。由于某种原因,按钮显示在图像的左侧。这是我的代码:
// 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];
}
答案 0 :(得分:1)
每个视图都有自己的子视图来源。
因此设置与ButtonView.frame.origin相同的ImageView.frame.origin不会将它们放在与superview完全相同的位置。
所以你的imageView需要将原点设置为相对于按钮左上角的值。
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];