我是以编程方式生成的UICollectionViewCell。 标签放在单元格上。
现在,我想将图像设置为单元格上的标签,但该图像应根据单元格的大小调整大小。
以下是使用的代码,但它没有起作用:
let objImage : UIImage = UIImage(named: "OK")!
let objCGSize = cell.lblNumber?.frame.size
UIGraphicsBeginImageContext(objCGSize!)
objImage.drawInRect(CGRectMake(0, 0, (cell.lblNumber?.frame.size.width)!, (cell.lblNumber?.frame.size.height)!))
let objNewImage : UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
cell.lblNumber!.text = ""
cell.lblNumber!.backgroundColor = UIColor(patternImage: objNewImage)
还有其他修复吗?
我尝试使用UIButton而不是UILabel。但是这里出现了另外一个像文本对齐的问题,图像没有设置..
. . . //Code for UIButton instead of UILabel
cell.btnNumber.setTitle("", forState: .Normal)
//cell.btnNumber.setImage(UIImage(named: "OK"), forState: .Normal)
cell.btnNumber.imageView?.image = UIImage(named: "OK")
cell.btnNumber.imageView?.contentMode = UIViewContentMode.ScaleAspectFit
. . .
答案 0 :(得分:1)
设置框架后,可以尝试设置UIImageView的内容模式吗?它可以按如下方式完成
objImage.contentMode = UIViewContentMode.ScaleToFill
根据您的要求,您可以使用ScaleToFill
或ScaleAspectFill
。您可以找到有关内容模式here
答案 1 :(得分:1)
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("hobbiesCell", forIndexPath: indexPath) as! HobbiesTagCell
self.configureCell(cell, forIndexPath: indexPath)
return cell
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
self.configureCell(self.sizingCell!, forIndexPath: indexPath)
return self.sizingCell!.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)
}
func configureCell(cell: HobbiesTagCell, forIndexPath indexPath: NSIndexPath) {
let tag = tags[indexPath.row]
cell.hobbiesTagName.text = yourArrname[indexPath.item]
}
答案 2 :(得分:1)