2015-05-24 17 views
1

Я населяю UITableView с изображениями, выбранными пользователем. Я бы хотел, чтобы миниатюры в ячейках таблицы были одинакового размера, не влияя на соотношение сторон, чтобы не растягивать/перекосить изображения, что звучит для меня как ScaleAspectFill, однако ни один из вариантов UIViewContentMode, похоже, не имеет эффекта , Там мне противоречивые методы, примечание heightForRowAtIndexPath, но удаление этого делает мои ячейки слишком маленькими. Ниже приведены мои методы didSelectRowAtIndexPath и heightForRowAtIndexPath, а также снимки экрана из симулятора моего текущего кода (с использованием изображений симулятора). Любая помощь приветствуется. screenshot from iOS simulatorUITableViewCell ImageView не масштабируется правильно?

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    //sets cell based on meme in array 
    let cell = tableView.dequeueReusableCellWithIdentifier("memeCell") as! UITableViewCell 
    let meme = self.memes[indexPath.row] 

    // Set the name and image 
    cell.textLabel?.text = meme.topText + " " + meme.bottomText 
    cell.imageView?.frame = CGRectMake(0, 0, 200, 100) 
    cell.imageView?.contentMode = UIViewContentMode.ScaleToFill //ScaleAspectFill is best, ScaleToFill used to exagerate that its not working 
    //cell.imageView?.backgroundColor = UIColor.grayColor() //legacy code, will be removed at commit 
    cell.imageView?.image = meme.origImage 

    return cell 
} 

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    //cell row won't be large enough unless this method is called 
    return 75.0 
} 

ответ

2

Вы можете добавить подкласс UITableViewCell, то переопределяет layoutSubviews метод:

override func layoutSubviews() { 
    super.layoutSubviews() 

    self.imageView.frame = CGRect(0,0,200,100) 
} 
0

Заканчивать https://github.com/mattgemmell/MGImageUtilities

Вы можете использовать функцию кадрирования в UIImage + ProportionalFill, что масштабирует изображение пропорционально полностью заполнить требуемый размер, обрезать по направлению к его центру, обрезать все изображения до того же размера, прежде чем назначать изображение.

Вы можете использовать его как это:

cell.imageView?.image = meme.origImage. imageCroppedToFitSize(CGSize(width: 200, height: 100)) 
Смежные вопросы