UIButton实现背景拉伸

UIButton实现背景拉伸,即图片两端不拉伸中间拉伸的办法有如下两种:

第一种方法很简单而且使用性更广。做法就是直接拉伸想要setBackgroundImage的image,代码如下:

  1. UIImage *image = [UIImage imageNamed:@"image.png"];
  2. image = [image stretchableImageWithLeftCapWidth:floorf(image.size.width/2) topCapHeight:floorf(image.size.height/2)];

设置了左端帽之后,rightCapWidth = image.size.width - (image.leftCapWidth + 1); 也就是说图片中间的一像素用来拉伸。垂直方向同上。设置之后无论把image放到什么控件中都可以自动拉伸了。

  1. UIImage *buttonImage = [UIImage imageNamed:@"contact.png"];
  2. buttonImage = [buttonImage stretchableImageWithLeftCapWidth:floorf(buttonImage.size.width/2) topCapHeight:floorf(buttonImage.size.height/2)];
  3. UIImage *buttonImageselected = [UIImage imageNamed:@"contactselected.png"];
  4. buttonImage = [buttonImage stretchableImageWithLeftCapWidth:floorf(buttonImage.size.width/2) topCapHeight:floorf(buttonImage.size.height/2)];
  5. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  6. button.frame = CGRectMake(0, 0, 240, 44);
  7. [button setBackgroundImage:buttonImage forState:UIControlStateNormal];
  8. [button setBackgroundImage:buttonImageselected forState:UIControlStateHighlighted];
  9. button.center = CGPointMake(160, 240);
  10. [button setTitle:@"button" forState:UIControlStateNormal];
  11. [button setTitle:@"buttonClick" forState:UIControlStateHighlighted];
  12. [self.view addSubview:button];

第二种方法是在UIButton中加入一个UIImageView,拉伸imageView,然后将button的背景设为clearColor等等。把imageView放入button中,并且sendToBack,得到效果。代码如下:
 //刚才imageView拉伸的代码

  1. UIImageView *strechTest = [[UIImageyiView alloc] initWithImage:[UIImage imageNamed:@"contact.png"]];
  2. [strechTest setContentStretch:CGRectMake(0.5f, 0.5f, 0.f, 0.f)];
  3. CGRect frame = strechTest.frame;
  4. frame.size.width += 100;
  5. strechTest.frame = frame;
  1. //把imageView放入button中,并设置为back
  2. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  3. button1.frame = frame;
  4. button1.center = CGPointMake(160, 140);
  5. [button1 addSubview:strechTest];
  6. [button1 sendSubviewToBack:strechTest];
  7. [button1 setBackgroundColor:[UIColor clearColor]];
  8. [button1 setTitle:@"button" forState:UIControlStateNormal];
  9. [button1 setTitle:@"buttonClick" forState:UIControlStateHighlighted];
  10. [self.view addSubview:button];

效果:

时间: 2024-10-29 02:11:36

UIButton实现背景拉伸的相关文章

UIButton的背景图片

一直在使用UIButton创建按钮,包括Plain纯文字型的按钮.设置背景图片.设置选中状态图片按钮-特别是当我们的提供的图片比按钮本身的尺寸小时,会导致按钮没有被图片完全填充,当图片比button大时,图片会超出button的frame范围(除非设置button.layer.maskToBounds = YES可防止超出button的frame).其实UIButton已经提供了给我们自由定制button的接口,只是很多人都没有注意到它的存在.我们只要继承UIButton类,然后在其子类中重写下

html背景拉伸

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312">    <title><沈阳易行>APP下载</title> <style> .div-center{ width:321px; margin: 0 auto; margin-top: 60px; z-index:8; }

IOS中UIButton的背景图像无法正常显示的原因

主要是在将图像引入项目中,没有选择Destination:Copy items if needed一项. 没有选择Destination:Copy items if needed一项,图像只能是以链接的形式存在于项目中,当图像移动路径时,项目中的图像就无法正常显示. 所以,以后只要把其他资源引进项目中,都要勾选这一项,即将资源复制一份放进项目中,而不是以链接的形式存在于项目中.

CocoStudio textfiled 文本点击区域按背景拉伸

我用的是cocos2dx2.2版本,textfield的settouchsize 只是一个样式,点击输入框的时候只有点击到文字才能进行输入,当文本长度很短视,体验感差的不行 直接说方法吧,废话也没人看.. 为要点击的区域增加 imageview exchangeTextBg = dynamic_cast<ImageView *>(ui->getWidgetByName("reward_exchange_bg_0")); exchangeTextBg->setTo

iOS图像拉伸解决方案

UIButton实现背景拉伸,即图片两端不拉伸中间拉伸的办法有如下两种: 第一种方法很简单而且使用性更广.做法就是直接拉伸想要setBackgroundImage的image,代码如下: UIImage *image = [UIImage imageNamed:@"image.png"]; image = [image stretchableImageWithLeftCapWidth:floorf(image.size.width/2) topCapHeight:floorf(imag

iOS开发-UIButton详解

UIButton算是最基本的一个控件了,不过有的时候用法挺多关于UIButton文字的位置,字体大小,字体的颜色 1.设置UIButton字体大小,尤其注意不要使用直接调用setFont: [self.playButton.titleLabel setFont:[UIFont systemFontOfSize:14]]; 2.UIButton默认背景是白色的,如果文字默认颜色是白色的,是看不到文字的,设置标题颜色: [self.playButton setTitleColor:[UIColor

10个Web前端值得收藏的背景全屏效果展示(附源码)(上)

作为一个前沿的 Web 开发者,对于 HTML5 和 现在流行的3D技术或多或少都有掌握.特别是在移动端大显身手.这篇文章挑选了10个绚丽的背景全景展示效果,希望对你有所帮助. 1.  JS图片背景全屏代码实现物理效果 玩法介绍:可以随意拖动鼠标.按住鼠标左键选中旋转物体.或者按住鼠标滑轮放大或者缩小,有不同的效果,赶紧来体验一下. 源码下载  /  在线演示 2.  CSS3学习 - 网站背景拉伸平铺jQuery插件 这个插件集成了一些非常好的 JavaScript 库,提供一个方便使用的文本

转 Div+Css控制背景图片水平垂直居中显示 背景铺满全屏

在Web开发中我们经常要碰到这样的问题:在为一个页面设置背景图片之后往往希望图片能够在分辨率比较大的情况下水平垂直都居中显示.通常水平居中显示在Css中是很容易做到的,而垂直居中就需要使用一些Css的技巧: 1. 首先为了能使得网站能够根据浏览器大小自适应,我们需要将页面的body元素height值设为100%,而在这之前,我们需要将xhtml验证从网站头删除.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&quo

iOS 注册或登录页面(UILable,UITextField,UIButton)

注册或登录页面 如下图 1,这里为了展现UITextField的文本框关联键盘的设置,这里把"密码"和"确定密码"的关联键盘都设置为数字键盘,实际应用中密码一般都允许为数字或字母. 2,实现了键盘收回操作. 3,这里没有写对"用户名"进行特殊字符过滤的代码. 实现代码: #import "ViewController.h" @interface ViewController () @end @implementation Vi