gpt4 book ai didi

objective-c - 构建具有多个可拉伸(stretch)图像的 UIImage

转载 作者:可可西里 更新时间:2023-11-01 05:31:17 25 4
gpt4 key购买 nike

我有 3 张图片,左边的大写字母,右边的大写字母,中间的。也许使用 CGImageRefs (?),有没有一种方法可以基于 CGRect 构建位图,将中心部分置于某个容器的中心,拉伸(stretch)左端盖直到它到达中间部分和右侧相同然后生成 UIImage

最佳答案

好的,我按照 promise 进行了查找。这是一个解决方案:

基本思想

  • 取左帽并制作一个右侧拉伸(stretch)的 UIImage
  • 用箭头UIImage“粘合”它
  • 现在用右边的盖子粘住它,左边有拉伸(stretch)的一面

这是一张小图,我认为它可以表达

  ______ ........    ________      .........___________
{______|........| | arrow | |.........|__________)
left cap|lc flex -------- rc flex | right cap

代码

// get the images from disk
UIImage *leftCap = [UIImage imageNamed:@"leftCap.png"];
UIImage *arrow = [UIImage imageNamed:@"arrow.png"];
UIImage *rightCap = [UIImage imageNamed:@"rightCap"];

// stretch left and right cap
// calculate the edge insets beforehand !

UIImage *leftCapStretched = [leftCap resizableImageWithCapInsets:UIEdgeInsetsMake(topInset, leftInset, bottomInset, rightInset)];
UIImage *rightCapStretched = [rightCap resizableImageWithCapInsets:UIEdgeInsetsMake(topInset, leftInset, bottomInset, rightInset)];

CGFloat widthOfAllImages = leftCapStretched.size.width + arrow.size.width + rightCapStretched.size.width;

// build the actual glued image

UIGraphicsBeginImageContextWithOptions(CGSizeMake(widthOfAllImages, arrow.size.height), NO, 0);
[leftCapStretched drawAtPoint:CGPointMake(0, 0)];
[arrow drawAtPoint:CGPointMake(leftCap.size.width, 0)];
[rightCapStretched drawAtPoint:CGPointMake(leftCap.size.width + arrow.size.width, 0)];
UIImage* im = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

// now you should have a ready to use UIImage ;)

替代方案

受 Jonathan Plakets 的启发,仅使用 UIImageViews 并按上述方式拉伸(stretch) UIImages 就可以回答同样的问题。

关于objective-c - 构建具有多个可拉伸(stretch)图像的 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12002908/

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