Search code examples
iosswiftcgrect

how to set frame dynamically in swift?


i am trying to set imageview as subview for scrollview.for that i am setting different frame depends upon the screensize.

This is my code

 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)

But i am getting error this line

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

Solution

  • You have not yet created an instance of the struct CGRect yet. Before accessing / setting any members on it you you need to create a instance first and only after that set the different members of it:

    Change the line var frames:CGRect to:

    var frames = CGRectZero