2015-10-30 25 views
0

我有下面的代碼在迅速的 「視圖控制器」 類的ViewController:UIViewController的,的UITableViewDelegate,UITableViewDataSource {如何標籤添加到UIStackView的一個特定arrangedSubView

@IBOutlet weak var imgTableView:UITableView! 

let imgList = ["1.png", "2.png", "3.png" , "4.png"] 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return self.imgList.count 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCellWithIdentifier("CellID", forIndexPath: indexPath) as? ImgTableViewCell 

    cell?.coverImage.image = UIImage(named: imgList[0]) 

    for intValue in 1..<4 
    { 
     let stackViewImages = UIImageView() 
     stackViewImages.image = UIImage(named: imgList[intValue]) 
     cell?.imgStackView.addArrangedSubview(stackViewImages) 
    } 

    return cell! 

} 

}

+++ ++++++++++++++++++++

類ImgTableViewCell:{UITableViewCell的

@IBOutlet weak var coverImage:UIImageView! 
@IBOutlet weak var imgStackView:UIStackView! 

override func awakeFromNib() { 
    super.awakeFromNib() 
    // Initialization code 
} 

override func setSelected(selected: Bool, animated: Bool) { 
    super.setSelected(selected, animated: animated) 

    // Configure the view for the selected state 
} 

}

如何將標籤添加到堆棧視圖中的最後一張照片。我已經嘗試創建一個新的標籤,並通過調用stackview中的imageview上的addsubview,但將標籤放置在單元格的頂部,以編程方式將其添加到堆棧視圖中。

回答

0

由於您的UIStackView包含4個UIImageView。你可以使用UIStackView的index屬性來訪問它裏面的對象。 的方式將在StackView插入對象-insertArrangedSubView:atIndex

StackView索引從0開始,如目的C.

其他容器對象你喜歡這個堆棧視圖中創建一個指針到你的圖像視圖:

UIImageView * lastImageView = [stackView.subviews objectAtIndex:3];

您可以像這樣訪問它。

lastImageView.backgroundColor = [UIColor yellowColor];

現在添加任何其他子視圖e.g .. 的UILabel,假設你的標籤名稱是titleTextLabel,

[lastImageView addSubview:self.titleTextLabel]。

0

你有兩種可能的方式來實現這一目標(順便說一句,我鼓勵你簡化你的代碼像我一樣): 1)只需添加你的標籤作爲最後一個堆棧視圖觀點如下:

if let sv = cell?.imgStackView { 

    for i in 1..<4 { 
     let iv = UIImageView() 
     iv = UIImage(named: imgList[i]) 
     sv.addArrangedSubview(iv) 
    } 

    let l = UILabel() 
    l.text = "the last image" 
    l.frame.size.width = cell?.imgStackView.frame.width 
    l.numberOfLines = 0 
    l.sizeToFit() 
    sv.addArrangedSubview(t) 
} 

2),或者如果你必須比最後一個圖像相同的堆棧視圖電池的標籤,使用約束來定位它,你要如下,假設您想要的圖像視圖下方的標籤:

if let sv = cell?.imgStackView { 
    let n = 3 
    for i in 1...n { 
     let iv = UIImageView() 
     iv = UIImage(named: imgList[i]) 
     sv.addArrangedSubview(iv) 

     // last image: add a label underneath the image view 
     if i == n { 
      let l = UILabel() 
      l.text = "the last image" 
      l.frame.size.width = cell?.imgStackView.frame.width 
      l.numberOfLines = 0 
      l.sizeToFit() 
      // Add the bottom-top constraint 
      iv.translatesAutoresizingMaskIntoConstraints = false 
      iv.addConstraints([ 
       NSLayoutConstraint(item: l, attribute: .Top, relatedBy: .Equal, toItem: iv, attribute: .Bottom, multiplier: 1, constant: 0), 
      ]) 
     } 
    } 
} 

希望有幫助(順便說一句,我沒有合作在Xcode中編譯我的代碼)。

相關問題