2017-04-06 1 views
1

私のUICollectionViewCellに私はイメージとラベルを持っています。画像は、(私が欲しい)全体の細胞を占める - ただし、ラベルは画像の後ろに置かれているので見えません。私はbringSubview(toFront: titleLabel)を試しましたが、何も起こりません...本当に何をすべきかわかりません。多くの検索をしました。サブビューをプログラムでフロントに送信するにはどうすればよいですか? (前にサブビューを持ってきた)

これは、セルのためのコードで、あなたが見ることができるように、私はストーリーボードを使用していない(汚い制約のために申し訳ありませんが、これが問題だったかどうかを調べるために、さまざまなソリューションをテストしていた)

import UIKit 

class BaseCell: UICollectionViewCell { 
    override init(frame: CGRect) { 
     super.init(frame: frame) 
     setupViews() 
     setupBasket() 

    } 

    func setupViews() { 

    } 

    func setupBasket(){ 

    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

} 

class VideoCell: BaseCell { 

    var selectedItemID : String! 
    static let sharedInstance = VideoCell() 
    var video: Video? { 
     didSet { 
      titleLabel.text = video?.title 
      setupThumbnailImage() 

     } 
    } 


    func setupThumbnailImage() { 
     if let thumbnailImageUrl = video?.thumbnail_image_name { 
      thumbnailImageView.loadImageUsingUrlString(thumbnailImageUrl) 
     } 
    } 

    let thumbnailImageView: CustomImageView = { 
     let imageView = CustomImageView() 
     imageView.image = UIImage(named: "taylor_swift_blank_space") 
     imageView.contentMode = .scaleAspectFill 
     imageView.clipsToBounds = true 
     return imageView 
    }() 

    let titleLabel: UILabel = { 
     let textView = UILabel() 
     textView.translatesAutoresizingMaskIntoConstraints = false 
     textView.text = "Clothes" 
     textView.textColor = UIColor.lightGray 
     return textView 
    }() 


    let separatorView: UIView = { 
     let view = UIView() 
     view.backgroundColor = UIColor(red: 230/255, green: 230/255, blue: 230/255, alpha: 1) 
     return view 
    }() 

    var titleLabelHeightConstraint: NSLayoutConstraint? 

    let addtoBasket = UIButton(type: .contactAdd) 


    override func setupViews() { 

     addtoBasket.frame = CGRect(x: 50, y: 0, width: 20, height: 60) 

     addSubview(addtoBasket) 
     addSubview(titleLabel) 
     addSubview(thumbnailImageView) 
     addSubview(separatorView) 
     addSubview(addtoBasket) 


     titleLabel.superview!.bringSubview(toFront: titleLabel) 


     //horizontal constraints 
     addConstraintsWithFormat("H:|-0-[v0]-0-|", views: thumbnailImageView) 


     //vertical constraints 
     addConstraintsWithFormat("V:|-1-[v0]-1-|", views: thumbnailImageView) 
     addConstraintsWithFormat("H:|-0-[v0]-1-|", views: separatorView) 


     addtoBasket.translatesAutoresizingMaskIntoConstraints = false 
     addtoBasket.heightAnchor.constraint(equalToConstant: 20).isActive = true 
     addtoBasket.widthAnchor.constraint(equalToConstant: 20).isActive = true 
     addtoBasket.centerXAnchor.constraint(equalTo: addtoBasket.superview!.centerXAnchor, constant: 90).isActive = true 
     addtoBasket.centerYAnchor.constraint(equalTo: addtoBasket.superview!.centerYAnchor, constant: -50).isActive = true 

     //top constraint 
     addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .top, relatedBy: .equal, toItem: self, attribute: .bottom, multiplier: 1, constant: 8)) 

     //right constraint 
     addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .right, relatedBy: .equal, toItem: self, attribute: .right, multiplier: 1, constant: 0)) 

     //right constraint 
     addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .left, relatedBy: .equal, toItem: self, attribute: .left, multiplier: 1, constant: 20)) 

     //height constraint 
     titleLabelHeightConstraint = NSLayoutConstraint(item: titleLabel, attribute: .height, relatedBy: .equal, toItem: self, attribute: .height, multiplier: 1, constant: -10) 
     addConstraint(titleLabelHeightConstraint!) 

    } 
} 
+1

あなたの制約はおそらく間違っています。一度に1つのビューを追加し、それぞれのビューが正しいことを確認します。 –

+0

@ルーフランコ私は、画像を小さくして、テキストが下にあることを明確に見ることができるので、制約であってはなりません。ボタン 'addtoBasket'の制約は機能し、イメージの下にはありません。私もラベルのためのすべての制約の慣行を試してみましたが、何も動作しませんが、おそらくまだ矛盾している何か..本当に奇妙です – chetbaker

答えて

1

はアクセスしてみてくださいlabelsレイヤーを開き、そのzPositionを設定します。

titleLabel.layer.zPosition = 1

1

は明確な制約と間違って何か、今働いていたお試しください!ありがとう

関連する問題