设置 UIScrollView。如果在 viewDidLayoutSubviews 中调用 UIImageView 图像会失真。包括图像
Setting up a UIScrollView. UIImageView images are distorted if called in viewDidLayoutSubviews. Image included
我遇到了一个奇怪的问题。我有一个在界面生成器中设置的 UIScrollView。我通过名为 setupScrollView 的方法向其中添加内容,如下所示:
-(void)setupScrollView {
UIView *content = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.scrollView.frame.size.width*[self.stickers count], self.scrollView.frame.size.height)];
for(int i=0; i<[self.stickers count]; i++){
UIImageView *imageView= [[UIImageView alloc] initWithFrame:CGRectMake(i*self.scrollView.frame.size.width, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height)];
MySticker *sticker = self.stickers[i];
imageView.image=sticker.image;
[content addSubview:imageView];
NSLog(@"scroll view width is %f",self.scrollView.frame.size.width);
NSLog(@"ImageView width is %f", imageView.frame.size.width);
}
self.scrollView.contentSize=CGSizeMake(content.frame.size.width ,content.frame.size.height);
[self.scrollView addSubview:content];
}
现在我在 viewDidLayoutSubviews
中调用此方法,因为我需要在使用界面构建器中设置的约束后首先重新定位视图。这一切都很好,但我在滚动视图中的图像略微扭曲,边缘参差不齐,有 sticker/chat 个带有黑色轮廓的图像,因此非常明显。但是,如果我将 [self setupScrollView] 放在 viewDidLoad 方法中,图像将不会失真并且看起来非常清晰。示例图片:
不知道为什么要这样做。谁能指出我可能做错了什么?
如果它在 viewDidLoad 中正常工作,请尝试在 viewWillLayoutSubviews 方法中调用 setupScrollView 方法。
还要检查多次调用 setupScrollView 以避免添加重复项的情况。
我遇到了一个奇怪的问题。我有一个在界面生成器中设置的 UIScrollView。我通过名为 setupScrollView 的方法向其中添加内容,如下所示:
-(void)setupScrollView {
UIView *content = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.scrollView.frame.size.width*[self.stickers count], self.scrollView.frame.size.height)];
for(int i=0; i<[self.stickers count]; i++){
UIImageView *imageView= [[UIImageView alloc] initWithFrame:CGRectMake(i*self.scrollView.frame.size.width, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height)];
MySticker *sticker = self.stickers[i];
imageView.image=sticker.image;
[content addSubview:imageView];
NSLog(@"scroll view width is %f",self.scrollView.frame.size.width);
NSLog(@"ImageView width is %f", imageView.frame.size.width);
}
self.scrollView.contentSize=CGSizeMake(content.frame.size.width ,content.frame.size.height);
[self.scrollView addSubview:content];
}
现在我在 viewDidLayoutSubviews
中调用此方法,因为我需要在使用界面构建器中设置的约束后首先重新定位视图。这一切都很好,但我在滚动视图中的图像略微扭曲,边缘参差不齐,有 sticker/chat 个带有黑色轮廓的图像,因此非常明显。但是,如果我将 [self setupScrollView] 放在 viewDidLoad 方法中,图像将不会失真并且看起来非常清晰。示例图片:
不知道为什么要这样做。谁能指出我可能做错了什么?
如果它在 viewDidLoad 中正常工作,请尝试在 viewWillLayoutSubviews 方法中调用 setupScrollView 方法。 还要检查多次调用 setupScrollView 以避免添加重复项的情况。