2015-06-13 2 views
0

У меня есть следующий код, который создает UIView, и некоторые из его подпанелей, и добавляет их к UIScrollView, все в цикле:Неправильное выравнивание подвидов в UIScrollView

var count:CGFloat=bookScrollView.frame.minX 

    for var i=0;i<10;i++ { 
     var view=UIView(frame: CGRect(x: count + 20, y: bookScrollView.frame.minY + 30, width: 200, height: 300)) 
     view.backgroundColor=UIColor.whiteColor() 
     view.layer.cornerRadius = 5; 
     view.layer.masksToBounds = true; 

     var imageView=UIImageView(frame: CGRect(x: count, y: view.frame.minY - 30, width: 150, height: 220)) 
     // imageView.image=UIImage(named: "Sample_Book")! 
     view.addSubview(imageView) 

     var titleLabel=UILabel(frame: CGRect(x: count + 10, y: imageView.frame.maxY + 30, width: 185, height: 60)) 
     titleLabel.text="Head First Javascript" 
     titleLabel.backgroundColor=UIColor.clearColor() 
     titleLabel.font=UIFont(name: "Menlo-Bold ", size: 15) 
     titleLabel.textAlignment = NSTextAlignment.Center 
     titleLabel.textColor=UIColor.grayColor() 
     view.addSubview(titleLabel) 

     bookScrollView.addSubview(view) 
     count+=220 
    } 

    bookScrollView.contentSize=CGSize(width: count, height: 200) 

Он отлично работает, за исключением тот факт, что кроме первых view, imageView и titleLabel не видны.

Метка и изображениеПросмотр перемещены вправо от второго вида вперед.

ответ

1

Рамки выражаются в координатном пространстве супервизора.

Поскольку вы добавляете свой вид изображения и метку в view, а не в прокрутку, их кадры следует указывать в координатном пространстве view. Поэтому вам не нужно добавлять count в свою позицию.

var imageView=UIImageView(frame: CGRect(x: 0.0, y: 0.0, width: 150, height: 220)) 

И:

var titleLabel=UILabel(frame: CGRect(x: 10.0, y: imageView.frame.maxY + 30, width: 185, height: 60)) 

Примечание: Вы должны смотреть в UICollectionView и autolayout для более надежного способа достижения этой цели.

+0

Спасибо, он работал. –