UIImageView和UIButton没有排队

时间:2011-09-19 14:29:55

标签: objective-c xcode uiimageview uibutton

我有一个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];
} 

1 个答案:

答案 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];