UIButton实现背景拉伸,即图片两端不拉伸中间拉伸的办法有如下两种:
第一种方法很简单而且使用性更广。做法就是直接拉伸想要setBackgroundImage的image,代码如下:
UIImage *image = [UIImage imageNamed:@"image.png"]; image = [image stretchableImageWithLeftCapWidth:floorf(image.size.width/2) topCapHeight:floorf(image.size.height/2)];
设置了左端帽之后,rightCapWidth = image.size.width - (image.leftCapWidth + 1); 也就是说图片中间的一像素用来拉伸。垂直方向同上。设置之后无论把image放到什么控件中都可以自动拉伸了。
UIImage *buttonImage = [UIImage imageNamed:@"top_navigation_roundedrect.png"]; buttonImage = [buttonImage stretchableImageWithLeftCapWidth:floorf(buttonImage.size.width/2) topCapHeight:floorf(buttonImage.size.height/2)]; UIImage *buttonImageselected = [UIImage imageNamed:@"top_navigation_roundedrectselected.png"]; buttonImage = [buttonImage stretchableImageWithLeftCapWidth:floorf(buttonImage.size.width/2) topCapHeight:floorf(buttonImage.size.height/2)]; UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(0, 0, 240, 44); [button setBackgroundImage:buttonImage forState:UIControlStateNormal]; [button setBackgroundImage:buttonImageselected forState:UIControlStateHighlighted]; button.center = CGPointMake(160, 240); [button setTitle:@"myBUtton" forState:UIControlStateNormal]; [button setTitle:@"buttonClick" forState:UIControlStateHighlighted]; [self.view addSubview:button];
第二种方法是在UIButton中加入一个UIImageView,拉伸imageView,然后将button的背景设为clearColor等等。把imageView放入button中,并且sendToBack,得到效果。代码如下:
//刚才imageView拉伸的代码
UIImageView *strechTest = [[UIImageyiView alloc] initWithImage:[UIImage imageNamed:@"test.png"]]; [strechTest setContentStretch:CGRectMake(0.5f, 0.5f, 0.f, 0.f)]; CGRect frame = strechTest.frame; frame.size.width += 100; strechTest.frame = frame;
//把imageView放入button中,并设置为back
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button1.frame = frame; button1.center = CGPointMake(160, 140); [button1 addSubview:strechTest]; [button1 sendSubviewToBack:strechTest]; [button1 setBackgroundColor:[UIColor clearColor]]; [button1 setTitle:@"myBUtton" forState:UIControlStateNormal]; [button1 setTitle:@"buttonClick" forState:UIControlStateHighlighted]; [self.view addSubview:button];
相关推荐
iOS图像拉伸,stretchableImageWithLeftCapWidth 理论:http://blog.csdn.net/z251257144/article/details/7566187
适用于Android和iOS的Flutter插件支持裁剪图像。.zip,android和ios的flutter插件支持裁剪图像
UIImage的常用分类,涉及到截屏,拉伸,使用颜色生成图像,模糊图像等。
该技术只是将 9-patch PNG 图像转换为 iOS 兼容、可调整大小的 UIImage 对象。 有关详细信息,请参阅 UIImage 的 resizableImageWithCapInsets:(UIEdgeInsets)insets 方法。 所以它只支持在水平和垂直两侧拉伸一段...
React本机可转换图像一个纯JavaScript编写的可变形图像组件(例如PhotoView或ImageViewer),支持平移,捏合,双击和拖动等手势,可与iOS和Android一起使用。 用纯JS编写,此组件应该是在所有可缩放,可滚动的...
特征: 用 Swift 编写通过 Marvel API ( ) 访问的数据图片缓存核心数据UIPageViewController UITableView 和 UICollectionView 的自定义单元格带有拉伸图像的 UIScrollView WKWebView 显示 Marvel.com 的链接...
SVGgh是iOS的SVG渲染框架 作者 ,所有者介绍在我自己的应用程序中,我经常希望避免在界面元素中使用位图图像。 通常,我需要为Retina,非视网膜,iPhone和iPad添加PNG文件,并且发现自己在界面上只能使用拉伸元素。 ...
在大多数情况下,我们可以使用AspectFill使图像适合UIImageView的边界而不会拉伸或留有空格,但是,当涉及到人像时,如果人脸没有完全居中,通常会裁剪掉人脸。 这就是FaceAware的用处。它将通过UIImageView的image...
来源:github/VICMAImageViewLicence:MIT作者:Vito VICMAImageView能通过改变ContentMode并结合动画使图像实现动画化,例如自动适配,填充,拉伸,局部放大等等。
体会 指示 在开始之前,请阅读整个自述文件,以确保您了解对您的期望。 这项冲刺挑战旨在确保您能胜任整个媒体编程中讲授的概念。 首先分叉此存储库。...拉伸(可选):录像 并非每种体验都会使用
这个源码案例可以支持实现动画使图像实现动画效果,源码VICMAImageView,VICMAImageView能通过改变ContentMode并结合动画使图像实现动画化,例如自动适配,填充,拉伸,局部放大等等。
4.8.3 可拉伸图像 67 4.9 成为出色的内存使用者 67 4.10 小结 68 第5章 自动旋转和自动调整大小 70 5.1 使用自动调整属性处理旋转 71 5.1.1 指定旋转支持 71 5.1.2 使用自动调整属性设计界面 73 5.1.3 自动调整属性...
在Pure的帮助下,此Web应用程序可以适应屏幕尺寸,这意味着您可以缩小和拉伸屏幕,并且艺术品将保持其比例,以便您可以以最佳格式查看图像,无论您身在何处或正在使用什么设备/屏幕尺寸。 压缩后,Pure仅为4kb,...
与Unity 3,4,5和2017兼容,适用于IOS和Android以及所有其他Unity平台。 搜索结果 还包括一个先进的花键系统,它也允许路径跟随或花键转换为网格,一个动态软管系统和履带式车辆系统,以及一个先进的网格包裹系统,...
无论您的想象力如何,物体都可以拉伸,挤压或弯曲变形。或者,当对象在空间中移动时,使用空间扭曲使其自动变形。该套件的其他新增功能包括Point Cache动画支持,动态水波纹和浮动对象系统。 所有变形都可以在编辑...