2015-12-21 41 views
1

我想设置imageview作为scrollview.view的子视图,我设置不同的框架取决于屏幕尺寸。如何在swift中动态设置框架?

这是我的代码

let screensize:CGRect=UIScreen.mainScreen().bounds 
     let screenwidth=screensize.width 
     var frames:CGRect 
     for var index=0 ;index < arrBirds.count ;index++ 
      { 
       if(screenwidth==320) 
       { 
        frames.origin.x = CGFloat(index) * (self.view.frame.size.width); 
        frames.origin.y = 0; 

        frames.size=scrollview.frame.size; 

       } 
       else if(screenwidth==375) 
       { 
        frames.origin.x = CGFloat(index) * (self.view.frame.size.width); 
        frames.origin.y=0; 
        frames.size=scrollview.frame.size; 
       } 
       else 
       { 
        frames.origin.x = CGFloat(index) * (self.view.frame.size.width); 
        frames.origin.y=0; 
        frames.size=scrollview.frame.size; 
       } 

       imageView=UIImageView(frame:frames) 
       imageView.image=UIImage(named: arrBirds[index] as! String) 
       scrollview .addSubview(imageView) 

但我得到错误此行

frames.origin.x = CGFloat(index) * (self.view.frame.size.width);//struct frame must be completely initialised before a member is stored to. 
+0

我不知道哪一个答案是第一@ luk2302 –

+0

你可以看到,将鼠标悬停在时间戳上的右下方每个答案 - 写在“2小时前回答”(如果你悬停它会显示你确切的第二个)。此外,您可以通过“最古老”来排列答案。 – luk2302

+0

是的// @ luk2302 :) ... –

回答

1

您尚未创建的结构CGRect的实例呢。访问前/设置任何成员就可以了,你需要先创建一个实例,并只有经过设置它的不同成员:

更改行var frames:CGRect到:

var frames = CGRectZero 
1

Apple Docs

类和结构必须由时间他们所有的存储属性设定为 适当的初始值,该值类或的一个实例结构被创建。

frames对象没有初始化,而不是你应该写:

var frames = CGRectZero