我有一个正确显示在文本上方的图像,并且所选背景的大小正确,这要归功于小方法(循环遍历子视图)。
问题是彩色背景弹回到文本框架,然后动画回到正确的大小。
如何防止这种奇怪的背景动画?
- (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;
}
}
}
答案 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];
当心。这是另一种基于全球状态的黑客行为,可能会导致更严重的副作用。