[英]Scrollview Images creates issue
我在應用程序中使用“相機”選擇“圖像”並嘗試以水平滾動視圖顯示。
但是圖像重疊
我的密碼
-(IBAction)act_photo:(id)sender
{
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
//picker.allowsEditing = YES;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:picker animated:YES completion:NULL];
}
#pragma mark - Image Picker via Camera
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *chosenImage = info[UIImagePickerControllerOriginalImage];
[picker dismissViewControllerAnimated:YES completion:^{
[arr_images insertObject:chosenImage atIndex:0];
[self scrollImages_Setup2];
}];
}
-(void)scrollImages_Setup2
{
for (int k=0; k<arr_images.count; k++) {
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake((CGRectGetWidth(scl.frame) * k) + CGRectGetWidth(scl.frame), 0, CGRectGetWidth(scl.frame), CGRectGetHeight(scl.frame))];
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.image=[arr_images objectAtIndex:k] ;
[scl addSubview:imageView];
}
scl.contentSize = CGSizeMake((CGRectGetWidth(scl.frame) * arr_images.count)+CGRectGetWidth(scl.frame), CGRectGetHeight(scl.frame));
}
問題
圖片1
圖片2
如上所示,首先拍攝了Landscape Image2,然后拍攝了Portrait Image 1。
但是如您所見,圖像1具有圖像2的背景。
我認為這是因為scrollview出了點問題?
可能性2(大多數情況下) Scrollview保留了Imageview的強引用,即使它已從數組中刪除
讓我知道如何解決這個問題?
幫我解決這個問題
謝謝
您需要在循環中設置Y值,您的圖片Y值隨時都可以設置為相同,
每次拍攝新圖像時,您的完成處理程序會將新圖像作為第一個元素放入數組中,然后調用[self scrollImages_Setup2];
在其中迭代數組中的所有元素,並將它們作為新的子視圖添加到滾動視圖中。
當您拍攝第一個圖像(Image1)時,它將被添加到數組中,然后作為和子視圖添加到滾動視圖中。 當您拍攝第二張圖片(Image2)時,它會作為第一個元素添加到數組中。 因此,數組中有兩個元素(Image2和Image1)都作為子視圖添加到滾動視圖中。 但是Image1已經被添加到滾動視圖中,因此導致了您的問題。
解決該問題的方法可能是始終只添加新圖像並使用數組中元素的數量計算x位置,或者總是在再次添加和布局所有圖像之前刪除所有子視圖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.