包含UIButton的背景大小,包含文本上方的图像

时间:2014-07-11 14:51:06

标签: ios objective-c uibutton

我有一个正确显示在文本上方的图像,并且所选背景的大小正确,这要归功于小方法(循环遍历子视图)。

问题是彩色背景弹回到文本框架,然后动画回到正确的大小。

如何防止这种奇怪的背景动画?

enter image description here

- (void)layoutSubviews
{
    [super layoutSubviews];

    CGFloat marginTop = 0;
    CGFloat marginBottom = 0;

    CGSize titleSize = self.titleLabel.frame.size;
    self.imageEdgeInsets = UIEdgeInsetsMake(  - (titleSize.height - marginTop),
                                              0.0,
                                              0.0,
                                              - titleSize.width);

    CGSize imageSize = self.imageView.frame.size;
    self.titleEdgeInsets = UIEdgeInsetsMake(  0.0,
                                              - imageSize.width,
                                              - (imageSize.height - marginBottom),
                                              0.0);

    for (UIView *view in self.subviews) {
        if ([view isKindOfClass:[UIImageView class]] && ![view isEqual:self.imageView]) {
            view.frame = self.bounds;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我认为某些动画是在某个地方发生的。当您使用某种视图层次结构黑客时,它可能会被隐藏。

尝试通过调用setAnimationsEnabled:方法来避免动画。

   [UIView setAnimationsEnabled:NO];
   for (UIView *view in self.subviews) {
        if ([view isKindOfClass:[UIImageView class]] && ![view isEqual:self.imageView]) {
            view.frame = self.bounds;
        }
    }
   [UIView setAnimationsEnabled:YES];

当心。这是另一种基于全球状态的黑客行为,可能会导致更严重的副作用。