Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何使用UIScrollview动态加载图像_Iphone_Ios_Objective C_Uiview_Uiscrollview - Fatal编程技术网

Iphone 如何使用UIScrollview动态加载图像

Iphone 如何使用UIScrollview动态加载图像,iphone,ios,objective-c,uiview,uiscrollview,Iphone,Ios,Objective C,Uiview,Uiscrollview,我有点困惑如何使用UIScrollview或其他对象动态加载图像 !![动态显示来自webservice的图像][1] 在上图中,它支持图像的水平和垂直滚动。我们可以使用UIScrollview或其他对象(如UICollectionView)来执行此操作吗 下面是显示7幅图像的水平滚动视图的通用代码 int x=10; int y=20; for (int i=1; i<=7; i++) { UIView *bgView=[[UIView alloc]initWithFrame:

我有点困惑如何使用
UIScrollview
或其他对象动态加载图像

!![动态显示来自webservice的图像][1]

在上图中,它支持图像的水平和垂直滚动。我们可以使用
UIScrollview
或其他对象(如
UICollectionView
)来执行此操作吗

下面是显示7幅图像的水平滚动视图的通用代码

int x=10;
int y=20;

for (int i=1; i<=7; i++)
{
    UIView *bgView=[[UIView alloc]initWithFrame:CGRectMake(x, y, 80, 80)];
    bgView.tag=i;
    UIImageView *bgImgView=[[UIImageView alloc]initWithFrame:CGRectMake(1, 1, 55, 55)];
    bgImgView.tag=1;
    bgImgView.image=[UIImage imageNamed:[NSString stringWithFormat:@"img_%d.png",i]];
    [bgView addSubview:bgImgView];
    [self.videoscrollview addSubview:bgView];
    x=x+80;
}
self.scrollview.contentSize=CGSizeMake(7*80, 84);
intx=10;
int y=20;

对于(int i=1;i假设您的图像名称是like:images\u 1/2…/10…/n。(确保daynamic图像来自此图像名称)

试试这个:

int x=10; int y=20;

for (int i=1; i<=7; i++)
{
      UIView *bgView=[[UIView alloc]initWithFrame:CGRectMake(x, y, 80, 80)];
      bgView.tag=i;
      UIImageView *bgImgView=[[UIImageView alloc]initWithFrame:CGRectMake(1, 1, 55, 55)];
      bgImgView.tag=1;

      NSString *image = [NSString stringWithFormat:@"images_%d.png",i];
      bgImgView.image = [UIImage imageNamed:image];

     [bgView addSubview:bgImgView];
     [self.videoscrollview addSubview:bgView];
     x=x+80;
 }

 self.scrollview.contentSize=CGSizeMake(7*80, 84);
intx=10;inty=20;

对于(int i=1;i对于此,首先必须计算并检查scrollview的可见区域,即contentOffset,然后必须为该可见部分加载对象,并且在分配新对象时,应将其存储在数组中。当任何图像移动到可见区域之外时,应将其从scrollview中删除。 这样,它将占用更少的内存,您可以加载许多图像,而不会收到内存警告

您可以根据本文获得一些关于如何从scrollView添加和删除对象的提示

从NSBundle中为动态图像尝试以下操作:
NSString*resourcePath=[[NSBundle mainBundle]resourcePath];
n错误*错误;
NSArray*directoryContents=[[NSFileManager defaultManager]目录目录路径:资源路径错误:&错误];
NSMutableArray*imageArray=[[NSMutableArray alloc]init];

对于(inti=0;i感谢您宝贵的回答。我使用下面的代码暂时修复了上述问题

Bool isOddViewNo;//at.h文件

isOddViewNo=YES;//在viewDidLoad时

int x=10;
int y=10;

for (int i=0; i<=15; i++)
{
    if (isOddViewNo)
    {
        isOddViewNo=NO;
        UIView *oddView=[[UIView alloc]initWithFrame:CGRectMake(x, y, 90, 90)];
        UIImageView *oddImgView=[[UIImageView alloc]initWithFrame:CGRectMake(1, 1, 85, 85)];
        oddImgView.image=[UIImage imageNamed:[NSString stringWithFormat:@"img_%d.png",i]];
        [oddView addSubview:oddImgView];
        [self.scrollview addSubview:oddView];
        x+=90;
    }
    else
    {
        isOddViewNo=YES;
        UIView *evenView=[[UIView alloc]initWithFrame:CGRectMake(x, y, 150, 150)];
        UIImageView *evenImgView=[[UIImageView alloc]initWithFrame:CGRectMake(1, 1, 145, 145)];
        evenImgView.image=[UIImage imageNamed:[NSString stringWithFormat:@"img_%d.png",i]];
        [evenView addSubview:evenImgView];
        [self.scrollview addSubview:evenView];
        x+=150;
    }

    if ((i+1)%3==0)
    {
        //if added image is 4 th image
        y+=150;
        x=10;
    }

    if (y+150>self.scrollview.frame.size.height)
    {
        self.scrollview.contentSize=CGSizeMake(400, y+150);
    }
    else
    {
        self.scrollview.contentSize=CGSizeMake(320, self.scrollview.frame.size.height+150);
    }
}
intx=10;
int y=10;
for(int i=0;iself.scrollview.frame.size.height)
{
self.scrollview.contentSize=CGSizeMake(400,y+150);
}
其他的
{
self.scrollview.contentSize=CGSizeMake(320,self.scrollview.frame.size.height+150);
}
}

![我在UIScrollview的每一行显示三个不同大小的视图。它可以水平和垂直滚动。这是从模拟器中拍摄的屏幕截图][1]

您的问题是知道何时/如何将子视图加载/卸载到滚动视图中?请查看我的。是@Wain..好的..我会检查..@Vin抱歉,我知道使用UIScrollview动态加载图像,但我的要求与您的回答不同…我编辑了我的问题。抱歉,我知道即将使用UIScrollview动态加载图像从web服务或系统中,但我的要求与您的回答不同…使用UIScrollview处理不同的UIView大小。我编辑了我的问题。谢谢您的建议…我需要您在回答中所说的确切功能。您能给出示例代码吗?@Dushyant SinghFollow我给出的链接。这不是问题的重点你正在寻找的r代码,但是你可以根据你的使用来调整它。
int x=10;
int y=10;

for (int i=0; i<=15; i++)
{
    if (isOddViewNo)
    {
        isOddViewNo=NO;
        UIView *oddView=[[UIView alloc]initWithFrame:CGRectMake(x, y, 90, 90)];
        UIImageView *oddImgView=[[UIImageView alloc]initWithFrame:CGRectMake(1, 1, 85, 85)];
        oddImgView.image=[UIImage imageNamed:[NSString stringWithFormat:@"img_%d.png",i]];
        [oddView addSubview:oddImgView];
        [self.scrollview addSubview:oddView];
        x+=90;
    }
    else
    {
        isOddViewNo=YES;
        UIView *evenView=[[UIView alloc]initWithFrame:CGRectMake(x, y, 150, 150)];
        UIImageView *evenImgView=[[UIImageView alloc]initWithFrame:CGRectMake(1, 1, 145, 145)];
        evenImgView.image=[UIImage imageNamed:[NSString stringWithFormat:@"img_%d.png",i]];
        [evenView addSubview:evenImgView];
        [self.scrollview addSubview:evenView];
        x+=150;
    }

    if ((i+1)%3==0)
    {
        //if added image is 4 th image
        y+=150;
        x=10;
    }

    if (y+150>self.scrollview.frame.size.height)
    {
        self.scrollview.contentSize=CGSizeMake(400, y+150);
    }
    else
    {
        self.scrollview.contentSize=CGSizeMake(320, self.scrollview.frame.size.height+150);
    }
}