美文网首页
8 ios开发中的图片拉伸

8 ios开发中的图片拉伸

作者: rebeccaBull | 来源:发表于2017-03-29 20:48 被阅读0次

    XQ原始尺寸是(128*112),通过代码将这张图片的设置为按钮的背景图片,将创建好的宽高设置为(W = 200,H = 50)

    具体实现如下

    原因分析:是将原是尺寸为W=128 * H=112的图片拉伸成了W=200, H=50;

    解决方案:

    1.找美工MM重做一张较大的图片,这样的话就会出现软件包将来会变大,占用空间更大;

    2.苹果为我们提供了关于图片拉伸的API,我们可以直接利用代码实现

    苹果提供的api:最简单

    方法二:

    原图大小为24x60 '

    有些人可能马上想到一个解决方案,你叫美工把图片做大一点不就好了么,怎么拉伸都没事。没错,这是一种解决方案,不过不建议采取。原因很简单:1.图片大,导致安装包也大,加载到内存中也大;2.有更好的解决方案。

    图片会变得难看,完全是因为4个角被拉伸了,中间的拉伸并没有明显地丑化外观。因此要想小图片被拉伸后不会变得难看,在图片拉伸的时候,我们只需拉伸图片的中间一块矩形区域即可,不要拉伸边缘部分。

    比如只拉伸下图的矩形区域,上下左右的边缘都不拉伸:

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

    比如只拉伸下图的矩形区域,上下左右的边缘都不拉伸:

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

    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:@"contact.png"];

    buttonImage = [buttonImage stretchableImageWithLeftCapWidth:floorf(buttonImage.size.width/2) topCapHeight:floorf(buttonImage.size.height/2)];

    UIImage *buttonImageselected = [UIImage imageNamed:@"contactselected.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:@"button" 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:@"contact.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:@"button" forState:UIControlStateNormal];

    [button1 setTitle:@"buttonClick" forState:UIControlStateHighlighted];

    [self.view addSubview:button];

    ---------------------------------------  UIImageView的ContentMode的这些参数

    UIViewContentModeScaleToFill:图片拉伸至填充这个UIImageView(图片可能变形)

    UIViewContentModeScaleAspectFit : 图片拉伸至完全显示在UIImageView里面为止(图片不会变形)

    UIViewContentModeScaleAspectFill : 图片拉伸至 图片的宽度等于UIImageView的宽度 或者 图片的高度等于UIImageView的高度为止,然后将图片居中显示

    UIViewContentModeRedraw : 调用了setNeedsDisplay方法时,就会将图片重新渲染

    UIViewContentModeCenter:居中显示

    相关文章

      网友评论

          本文标题:8 ios开发中的图片拉伸

          本文链接:https://www.haomeiwen.com/subject/kzyyottx.html