1. 程式人生 > >iOS中圖片自適應拉伸

iOS中圖片自適應拉伸

一、概述

圖片拉伸在移動開發中特別常見,比如常用的即時通訊應用中的聊天氣泡就需要根據文字長度對背景圖片進行拉伸自適應。在Android中實現圖片的拉伸特別特別簡單,甚至不用寫一行程式碼,直接使用.9圖片進行劃線即可。但是iOS就沒這麼簡單了,比如對於下面的一張圖片(原始尺寸:200*103):

chat_bg

我們不做任何處理,直接將它用作按鈕的背景圖片:

1234567891011121314151617181920212223242526272829303132333435////  ViewController.m//  ChatBgTest////  Created by 李峰峰 on 2017/1/23.
//  Copyright © 2017年 李峰峰. All rights reserved.//#import "ViewController.h"@interfaceViewController()@end@implementation ViewController-(void)viewDidLoad{[superviewDidLoad];[selfaddBtn];}-(void)addBtn{// 建立一個按鈕UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];// 設定按鈕的framebtn.frame=CGRectMake(50,300,300,
103);// 載入圖片UIImage *image=[UIImage imageNamed:@"chat_bg"];// 設定按鈕的背景圖片[btn setBackgroundImage:image forState:UIControlStateNormal];// 將按鈕新增到控制器的view[self.view addSubview:btn];}@end

執行效果如下:

Snip20170123_1

可以看到圖片被明顯拉伸,顯示效果較差。今天我們研究內容就是圖片自適應拉伸。

二、圖片自適應拉伸

1、iOS5之前

iOS中有個叫端蓋(end cap)的概念,用來指定圖片中的哪一部分不用拉伸,如下圖:設定topCapHeight、leftCapWidth、bottomCapHeight、lerightCapWidth,圖中的黑色區域就是圖片拉伸的範圍,也就是說邊上的不會被拉伸。

26210816-542ef6dfac654ae699c339fe0e4bb155

使用UIImage的下面這個方法,可以通過設定端蓋寬度返回一個經過拉伸處理的UIImage物件:

1 -(UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight;

這個方法只有2個引數,leftCapWidth代表左端蓋寬度,topCapHeight代表上端蓋高度。系統會自動計算出右端蓋寬度rightCapWidth和底端蓋高度bottomCapHeight,程式碼如下:

123456789101112131415161718192021222324/** 第一種拉伸方式(iOS5之前) */-(void)

相關推薦

iOS圖片適應

一、概述 圖片拉伸在移動開發中特別常見,比如常用的即時通訊應用中的聊天氣泡就需要根據文字長度對背景圖片進行拉伸自適應。在Android中實現圖片的拉伸特別特別簡單,甚至不用寫一行程式碼,直接使用.9圖片進行劃線即可。但是iOS就沒這麼簡單了,比如對於下面的一張圖

IOS圖片作為button的背景圖

適用於IOS6.0         UIImage *image2 = [UIImageimageNamed:@"header_left_back_normal"];     CGFloat top = 0; // 頂端蓋高度     CGFloat bottom = 0

IOS圖片,類似Android的點9圖片

其中capInsets這個引數的格式是(top,left,bottom,right),從上、左、下、右分別在圖片上畫了一道線,這樣就給一個圖片加了一個框。只有在框裡面的部分才會被拉伸,而框外面的部分則不會改變。 (adsbygoogle = window.adsbygoogle ||

CSS背景圖片適應、全屏、填充、

方法一、js控制:123<div id="formbackground" style="position:absolute; width:100%; height:100%; z-index:-1">  <img src="pictures/background.jpg" height="1

[IOS] 詳解圖片局部 + 實現圖片局部收縮

情況 cat 寬度 cal inb 進行 圖片顯示 平鋪 length (圖為微信首頁右上角『+』效果) 當初還在開發WP7的時候,從IOS同事那邊了解到類似微信以上功能的實現。 Item條數不同,總高度也不同,這就需要將背景圖片進行局部拉伸到響應的高度,並且保持上方的三角

HTML使背景圖片適應瀏覽器大小

pub 拉伸 htm char html back 圖片 title tran 1、圖片不夠大,又background屬性不能拉伸圖片; 2、只能用個div,把其z-index值設為負,並使這個div大小為整個body大小,在div裏用<img> 3、b

wpf讓圖片適應容器大小,而且又不會昇變形

1 <Grid Grid.Column="3" 2 Margin="0,4,0,0" 3 Background="Black"> 4 <Viewbox> 5

解決DEDE防止圖片撐破頁面,文章內容圖片適應寬度

許多使用過DEDE建網站的朋友,可能都會碰到過這樣的情況,當我們在一個網站裡發表一篇文章時,如果我們使用的圖片,其寬度超過內容區域大小,圖片就會將表格撐大,同時使得頁面佈局變得混亂起來。當然,如果懂CSS,我們可以利用css來定義,讓超出的部分隱藏起來。不過,這

IOS應用開發-圖片處理(圖片 建立縮圖 解決圖片旋轉的問題 圖片編碼及上傳 將圖片寫入磁碟)

在做專案時我們經常要對圖片進行一些處理,以達到效能優化或滿足需求。常見的情形有以下幾種 //http://stackoverflow.com/questions/5427656/ios-uiimagepickercontroller-result-image-orien

織夢dedecms文章內容圖片適應寬度防止圖片撐破頁面

許多使用過織夢dedecms建網站的朋友,可能都會碰到過這樣的情況,當我們在一個網站裡發表一篇文章時,如果我們使用的圖片,其寬度超過內容區域大小,圖片就會將表格撐大,同時使得頁面佈局變得混亂起來。當然,如果懂CSS,我們可以利用css來定義,讓超出的部分隱藏起來。不過,這樣

iOS 讓webView裡的圖片適應

    NSString *js = [NSString stringWithFormat:@"function autoFit() { \                     var imgs = document.getElementsByTagName('img')

淺談 sencha 2.0 image和carousel的圖片適應大小的應用

        在sencha 2.0中,經常會用到xtype:image, 但是這個型別的使用,它的表現形式都是一個<div>,然後給把我們要顯示的圖片作為背景圖片放入這個div中,這樣,我們往往不好設定它的大小,因為圖片是背景圖片,高寬都不如<img&

Winfrom PictureBox 設置圖片適應

bitmap cnblogs oms system from mage blog style pre 初始狀態 1 Bitmap bm = new Bitmap(Image.FromStream(System.Net.WebRequest.Create(n

背景圖片適應

margin dex z-index img eight height ati posit 圖片 <div style="width:360px;height:200px;border:red 1px solid; margin-left:100px; margin-

CSS百分比padding實現比例固定圖片適應布局 (轉載)

缺失 com 我們 展現 auto ie6 iphone7 恰恰 備案 一、CSS百分比padding都是相對寬度計算的 在默認的水平文檔流方向下,CSS margin和padding屬性的垂直方向的百分比值都是相對於寬度計算的,這個和top, bottom等屬性的百分比

Qt圖片適應窗口控件大小(使用setScaledContents)

tails 解釋 兩種 適應 多余 contents 窗口大小 使用方法 自動 最近在用Qt設計一個小程序,想讓一幅圖片自適應窗口大小,由於本人比較笨,一直找不到好方法。找到了很多方法但都會出一些小問題,剛剛摸索出解決辦法了,在些記錄。 思想: 1 顯示圖像是

如何在Hexo實現適應響應式相冊功能

use images tin 博客 pps otc markdown min win 用最清晰簡潔的方法整合一個響應式相冊 效果 技術選型 由於我選用的主題使用了fancyBox作為圖片彈出展示的框架,查看後表示很不錯,能滿足需要 http://fancyapps.c

圖片適應

class pos wid lock play -a png pre bootstra 提取bootstrap的樣式 <img class="dib max-w100pct h-auto" src="img/Vehicle2.png" /> .dib{

設置背景圖片適應

body ack 背景 圖片自適應 ons back pan -h IV .body { background-size: cover; overflow: hidden; } 設置背景圖片完全顯示,不會缺少一部分設置背景圖片自適應

bootstrop設置背景圖片適應屏幕

span ack ont login TE con eight PE class 如果不用bootstrop框架,想讓背景圖片自適應窗口大小,可以這樣做: <style type="text/css"> html{height: 100%;}