Meg*_*anX 2 stretch uiimage ios
我有图像,在那个图像中我想重复水平和垂直线,所以我扩展我的图像.
例如,我有50X50的图像,我希望它是50x70,重复行x = 15.这在iOS上是否可行?
编辑:
好的,我会试着更清楚.我有图像60x60,基本上是矩形,宽度为60,高度为60.现在我想通过重复x = 40的像素将图像拉伸为80x60.或者简单地绘制它,我有:
123456
1 XXXAXX
2 XXXAXX
3 XXXAXX
4 XXXAXX
5 XXXAXX
6 XXXAXX
Run Code Online (Sandbox Code Playgroud)
我希望它是:
12345678
1 XXXAAAXX
2 XXXAAAXX
3 XXXAAAXX
4 XXXAAAXX
5 XXXAAAXX
6 XXXAAAXX
Run Code Online (Sandbox Code Playgroud)
我重复了40号线上图像上的所有像素.我想在任意数量的图像上进行.
实现你想要的结果的关键是resizableImageWithCapInsets:对UIImage.例如,采用以下50px x 50px图像(注意:这是@ 2x版本):

如果要将红线水平拉伸,首先要定义一条UIEdgeInset描述红线位置的红线:
UIEdgeInsets redLine = UIEdgeInsetsMake(0, 15, 0, 34);
Run Code Online (Sandbox Code Playgroud)
这定义了从左侧偏移15px的图像的一个像素宽的切片.该right偏移量是34因为可伸展片的右边缘位于16px的和50(图像宽度)减去16是34.
现在我们有了UIEdgeInset,我们可以加载图像并创建它的可伸缩版本:
UIImage *stretchableImage = [[UIImage imageNamed:@"my_image"] resizableImageWithCapInsets:redLine];
Run Code Online (Sandbox Code Playgroud)
我们可以使用我们需要的框架将其指定stretchableImage给a UIImageView:
UIImageView *stretchedImageView = [[UIImageView alloc] initWithImage:stretchableImage];
stretchedImageView.frame = CGRectMake(100,100,70,50); // The image view is 70px wide
Run Code Online (Sandbox Code Playgroud)
在应用程序中,stretchedImageView将如下所示:

还有另一个方法叫做resizableImageWithCapInsets:resizingMode:允许你平铺图像切片而不是拉伸它,所以你可以做一些疯狂的事情,比如拍这个图像:

并像这样平铺它:

| 归档时间: |
|
| 查看次数: |
4568 次 |
| 最近记录: |