2017-04-06 3 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

귀하의 제약 조건은 아마도 틀린 것입니다. 한 번에 하나의보기를 추가하고 각보기가 올바른지 확인하십시오. –

+0

@LouFranco 이미지를 작게 만들었고 텍스트가 아래에 있음을 분명히 볼 수 있으므로 제약이되어서는 안됩니다. 버튼 'addtoBasket'제약 조건이 작동하고 이미지 아래에 없습니다. 나는 또한 레이블에 대한 모든 제약 관행을 시도했지만 아무런 효과가 없지만, 아마도 여전히 상충되는 무언가가있다. 정말로 이상하다. – chetbaker

답변

1

하는 접근 시도 (지저분한 제약 죄송합니다,이 문제였다 여부를 확인하기 위해 다른 솔루션을 테스트했다) labels 레이어를 선택하고 zPosition을 설정합니다.

titleLabel.layer.zPosition = 1

1

것은 분명 제약에 뭔가 문제, 이제 일이 있었다보십시오! 감사합니다