Objective c 在ios中构建缩略图条带
我正在尝试构建一个缩略图条带-我想动态地将30x30的图像添加到条带中,因为它们是从web上的源代码惰性下载的 由于某些原因,图像被绘制在错误的宽度上。我看到他们在整个条纹上伸展,而不是停留在30x30 我希望缩略图条纹的高度为40,宽度为40xNum_ 下载每个图像后,我将其大小调整为30x30,然后我将其称为:Objective c 在ios中构建缩略图条带,objective-c,ios,uiimage,thumbnails,Objective C,Ios,Uiimage,Thumbnails,我正在尝试构建一个缩略图条带-我想动态地将30x30的图像添加到条带中,因为它们是从web上的源代码惰性下载的 由于某些原因,图像被绘制在错误的宽度上。我看到他们在整个条纹上伸展,而不是停留在30x30 我希望缩略图条纹的高度为40,宽度为40xNum_ 下载每个图像后,我将其大小调整为30x30,然后我将其称为: + (UIImage *) addThumbImage:(UIImage *)thumb toStripe:(UIImage *)stripe atIndex:(NSInteger)
+ (UIImage *) addThumbImage:(UIImage *)thumb toStripe:(UIImage *)stripe atIndex:(NSInteger)index
{
CGSize size = CGSizeMake((index)*40, 40);
if(UIGraphicsBeginImageContextWithOptions != NULL) {
UIGraphicsBeginImageContextWithOptions(size, NO, ([ UIScreen mainScreen ].scale));
}
else {
UIGraphicsBeginImageContext(size);
}
// first, drawing the stripe we got till now
CGPoint stripePoint = CGPointMake(0, 0);
[stripe drawAtPoint:stripePoint];
//now adding the new thumbnail
//CGPoint thumbPoint = CGPointMake((index-1)*40+5, 5);
NSUInteger locX = (index-1)*40+5;
CGRect newRect = CGRectMake(locX, 5, 30, 30);
[thumb drawInRect:newRect];
UIImage* result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return result;
}
- 我知道,在我将图像发送到该功能之前,图像的大小已正确调整为30x30
- 我想问题出在某个地方。。。它在整个图像上下文中绘制它
// I find this more convenient/readable than CGSizeMake:
CGSize size = { (index + 1) * 40.0f, 40.0f } ;
(如果考虑insert at index=0的情况,代码大小将为{0,40})。还有,为什么不让locX成为浮子呢
float locX = index * 40.0f + 5.0f ;
CGRect newRect = { { locX, 5.0f }, { 30.0f, 30.0f } } ;
那么,也许你有一个错误?我想你想要
// I find this more convenient/readable than CGSizeMake:
CGSize size = { (index + 1) * 40.0f, 40.0f } ;
(如果考虑insert at index=0的情况,代码大小将为{0,40})。还有,为什么不让locX成为浮子呢
float locX = index * 40.0f + 5.0f ;
CGRect newRect = { { locX, 5.0f }, { 30.0f, 30.0f } } ;
那么,您可能有一个错误?好的。多亏了@nielsbot,我才发现了问题所在: 我有一个UIImageView的IBOutlet,我把缩略图更新后的图像放在里面。 但是我从来没有根据条纹的大小更新UIImageview的大小,所以发生的是图像被拉伸了。。。这么简单,我错过了
谢谢尼尔斯波特。谢谢你。你又做了一次;) 好的。多亏了@nielsbot,我才发现了问题所在: 我有一个UIImageView的IBOutlet,我把缩略图更新后的图像放在里面。 但是我从来没有根据条纹的大小更新UIImageview的大小,所以发生的是图像被拉伸了。。。这么简单,我错过了
谢谢尼尔斯波特。谢谢你。你又做了一次;) 不,不是这样的。。。我只是试着根据你的建议修改代码-得到了确切的结果。当然,我也更新了索引,以便用正确的号码拨打电话。还有其他想法吗?:)您需要将比例传递给UIGraphicsBeginImageContextWithOptions!它应该是1.0/2.0。如果条带没有任何透明度,您可以使用([UIScreen mainScreen].scale),最后,您可以使用UIGraphicsBeginImageContext()——您使用条带的目的是什么?缩略图的最大数量是多少?此外,每次向条带图像添加缩略图时创建新条带图像可能会导致性能问题。你能通过使用带缩略图的+(UIImage*)StripeImage:(NSArray*)拇指在一次操作中创建条纹图像吗?嗯。你是如何在屏幕上绘制条纹的?不是这样的。。。我只是试着根据你的建议修改代码-得到了确切的结果。当然,我也更新了索引,以便用正确的号码拨打电话。还有其他想法吗?:)您需要将比例传递给UIGraphicsBeginImageContextWithOptions!它应该是1.0/2.0。如果条带没有任何透明度,您可以使用([UIScreen mainScreen].scale),最后,您可以使用UIGraphicsBeginImageContext()——您使用条带的目的是什么?缩略图的最大数量是多少?此外,每次向条带图像添加缩略图时创建新条带图像可能会导致性能问题。通过使用带缩略图的+(UIImage*)StripeImage:(NSArray*)拇指,您能否在一次操作中创建条带图像?嗯,您如何在屏幕上绘制条带?