Swift:如何将图像设置为符合标签尺寸的标签?

时间:2016-08-12 08:32:33

标签: ios swift xcode uiimage uicollectionviewcell

我是以编程方式生成的UICollectionViewCell。 标签放在单元格上。

现在,我想将图像设置为单元格上的标签,但该图像应根据单元格的大小调整大小。

Screenshot 1

以下是使用的代码,但它没有起作用:

 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。但是这里出现了另外一个像文本对齐的问题,图像没有设置..

Screenshot 2

. . . //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

 . . .

3 个答案:

答案 0 :(得分:1)

设置框架后,可以尝试设置UIImageView的内容模式吗?它可以按如下方式完成

objImage.contentMode = UIViewContentMode.ScaleToFill

根据您的要求,您可以使用ScaleToFillScaleAspectFill。您可以找到有关内容模式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)

将您的按钮图片视图内容模式设置为std::move,同时设置按钮属性ScaleAspectFit而不是setImage

setBackgroundImage

获取其他帮助,请参阅this