gpt4 book ai didi

ios - 如何在 UITableView 中将 UITableViewCell Image 更改为 Circle

转载 作者:IT王子 更新时间:2023-10-29 08:06:03 26 4
gpt4 key购买 nike

我的代码大部分都有效。

  • 我遇到的问题是图像开始时是方形的,当我滚动表格或刷新它时变成圆形。

我错过了什么?

这是我的代码:

    cell.imageView.layer.cornerRadius = cell.imageView.frame.size.width / 2.0;
cell.imageView.layer.borderWidth = 3.0;
cell.imageView.layer.borderColor = [UIColor colorWithRed:157.0/255.0 green:34.0/255.0 blue:53.0/255.0 alpha:1.0]
.CGColor;
cell.imageView.clipsToBounds = YES;

NSDictionary *tweet = (self.results)[indexPath.row];

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{

NSString * imageString = [tweet valueForKeyPath:@"user.profile_image_url"];
NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString:imageString]];

if (imageData != nil)
{
dispatch_async(dispatch_get_main_queue(), ^{

cell.imageView.image = [UIImage imageWithData: imageData];

[cell setNeedsLayout];
});
}
});

编辑 ---- 代码在cellForRowAtIndexPath

  • 就在我启动应用程序时,细胞图像是方形的。如果我 pullToRefresh 更改为圆形,或者如果我开始滚动表格,它们将更改为圆形。

编辑两个

我看到的另一个问题是图像在我滚动时发生变化。

如何防止这种情况?

最佳答案

如果有人遇到这个问题,这里是解决方案

Swift

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:ContactCellTableViewCell? = tableView.dequeueReusableCellWithIdentifier("contactCell", forIndexPath: indexPath) as? ContactCellTableViewCell



var contact : ContactStruct
image = searchResults[indexPath.row]
let newImage = resizeImage(image, toTheSize: CGSizeMake(70, 70))
var cellImageLayer: CALayer? = cell?.imageView.layer
cellImageLayer!.cornerRadius = 35
cellImageLayer!.masksToBounds = true
cell?.imageView.image = newImage


return cell!
}

正如您可能注意到的那样,35 硬编码基本上是此处图像大小的一半,即 70。这是调整大小的功能:

func resizeImage(image:UIImage, toTheSize size:CGSize)->UIImage{


var scale = CGFloat(max(size.width/image.size.width,
size.height/image.size.height))
var width:CGFloat = image.size.width * scale
var height:CGFloat = image.size.height * scale;

var rr:CGRect = CGRectMake( 0, 0, width, height);

UIGraphicsBeginImageContextWithOptions(size, false, 0);
image.drawInRect(rr)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext();
return newImage
}

注意:我使用的是自定义单元格类,如下所示:

import UIKit

class ContactCellTableViewCell: UITableViewCell {

@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var contactImage: UIImageView!
@IBOutlet weak var phoneLabel: UILabel!




override func awakeFromNib() {
super.awakeFromNib()

}

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

// Configure the view for the selected state
}
}

我真的花了一段时间才弄明白这个问题。最初滚动后图像会变圆,但现在使用此代码,您将从一开始就在单元格内拥有圆形图像。希望它对任何人都有帮助。

关于ios - 如何在 UITableView 中将 UITableViewCell Image 更改为 Circle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23350728/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com