最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS開發(fā)image背景圖片拉伸問題解決分析

 更新時間:2023年07月27日 11:31:31   作者:山水域  
這篇文章主要為大家介紹了iOS開發(fā)image背景圖片拉伸問題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

(如果是imageView的圖片拉伸問題,可直接看文章結(jié)尾,OC和Swift)

在開發(fā)中聊天、按鈕等背景圖片,UI設計師可以僅設計其邊框樣式,然后通過代碼就行處理,以適應聊天文字的大小或按鈕的大小。

這樣不僅可以使安裝包更輕巧而且可以更靈活的使用圖片;

方法一:

即將棄用方法這個函數(shù)是UIImage的一個實例函數(shù),它的功能是創(chuàng)建一個內(nèi)容可拉伸,而邊角不拉伸的圖片,需要兩個參數(shù),第一個是左邊不拉伸區(qū)域的寬度,第二個參數(shù)是上面不拉伸的高度。

根據(jù)設置的寬度和高度,將接下來的一個像素進行左右擴展和上下拉伸。

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

注意:可拉伸的范圍都是距離leftCapWidth后的1豎排像素,和距離topCapHeight后的1橫排像素。

   UIImage *image = [UIImage imageNamed:@"圓角矩形-7-拷貝"];
    //原始圖片樣式添加
    self.originalImageView.image = image;
    //沒處理好的圖片
    self.badImageView.image = image;
//圖片處理后的 將被棄用 方法一:
//這個函數(shù)是UIImage的一個實例函數(shù),它的功能是創(chuàng)建一個內(nèi)容可拉伸,而邊角不拉伸的圖片,需要兩個參數(shù),第一個是左邊不拉伸區(qū)域的寬度,第二個參數(shù)是上面不拉伸的高度。
//根據(jù)設置的寬度和高度,將接下來的一個像素進行左右擴展和上下拉伸。
    [self.textImageView setImage:[image stretchableImageWithLeftCapWidth:image.size.width*0.5 topCapHeight:image.size.height*0.5]];
//注意:可拉伸的范圍都是距離leftCapWidth后的1豎排像素,和距離topCapHeight后的1橫排像素。

圖片講解

可拉伸的范圍都是距離leftCapWidth后的1豎排像素,和距離topCapHeight后的1橫排像素。

方法二:

iOS 5 推出

- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets; 
// create a resizable version of this image. the interior is tiled when drawn.
   UIImage *image = [UIImage imageNamed:@"圓角矩形-7-拷貝"];
    //原始圖片樣式添加
    self.originalImageView.image = image;
    //沒處理好的圖片
    self.badImageView.image = image;
//處理圖片 iOS 5 方法三:
            CGFloat width = image.size.width;
            CGFloat height = image.size.height;
            CGFloat top = height/2.0f - 0.5f; // 頂端蓋高度
            CGFloat bottom = height/2.0f - 0.5f ; // 底端蓋高度
            CGFloat left = width/2.0f - 0.5f; // 左端蓋寬度
            CGFloat right = width/2.0f - 0.5f; // 右端蓋寬度
            UIEdgeInsets insets = UIEdgeInsetsMake(top, left, bottom, right);
            //創(chuàng)建 一個可變的image版本,內(nèi)部平鋪,類:UIImageResizingModeTile模式;
            self.textImageView.image = [image resizableImageWithCapInsets:insets];

圖片講解

中間的框框是復制平鋪區(qū)域,在本工程中為2px大小,Cap部分(即線的區(qū)域)為保留樣式

方法三:

iOS 6 方法

- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode;
 // the interior is resized according to the resizingMode
   UIImage *image = [UIImage imageNamed:@"圓角矩形-7-拷貝"];
    //原始圖片樣式添加
    self.originalImageView.image = image;
    //沒處理好的圖片
    self.badImageView.image = image;
            //處理圖片 iOS 6 方法二:
            CGFloat width = image.size.width;
            CGFloat height = image.size.height;
            CGFloat top = height/2.0f - 0.5f; // 頂端蓋高度
            CGFloat bottom = height/2.0f - 0.5f ; // 底端蓋高度
            CGFloat left = width/2.0f - 0.5f; // 左端蓋寬度
            CGFloat right = width/2.0f - 0.5f; // 右端蓋寬度
            UIEdgeInsets insets = UIEdgeInsetsMake(top, left, bottom, right);
            // 指定為拉伸模式,伸縮后重新賦值
            //UIImageResizingModeStretch:拉伸模式,通過拉伸UIEdgeInsets指定的矩形區(qū)域來填充圖片
            //UIImageResizingModeTile:平鋪模式,通過重復顯示UIEdgeInsets指定的矩形區(qū)域來填充圖片
            _textImageView.image = [image resizableImageWithCapInsets:insets resizingMode:UIImageResizingModeTile];
// Swift
let image = UIImage(named: "rounded_rectangle_7_copy")
if image != nil {  
    self.originalImageView.image = image  
    self.badImageView.image = image  
} else {  
    self.originalImageView.image = image  
    self.badImageView.image = image  
}
let width = image?.size.width ?? 0  
let height = image?.size.height ?? 0
let top = height / 2 - 0.5  
let bottom = height / 2 - 0.5  
let left = width / 2 - 0.5  
let right = width / 2 - 0.5
let insets = UIEdgeInsets(top: top, left: left, bottom: bottom, right: right)
if image != nil {  
    let resizingMode = UIImage.resizableImageResizingMode.tile  
    self.textImageView.image = UIImage(resizableImageWithCapInsets: insets, resizingMode: resizingMode)  
} else {  
    self.textImageView.image = UIImage(resizableImageWithCapInsets: insets, resizingMode: resizingMode)  
}

補充知識

關(guān)于imageView的圖片拉伸問題,在這里稍作總結(jié),希望可以給你提供幫助。

typedef NS_ENUM(NSInteger, UIViewContentMode) {
    UIViewContentModeScaleToFill,
    UIViewContentModeScaleAspectFit,      
// contents scaled to fit with fixed aspect. remainder is transparent
    UIViewContentModeScaleAspectFill,    
 // contents scaled to fill with fixed aspect. some portion of content may be clipped.
    UIViewContentModeRedraw,             
 // redraw on bounds change (calls -setNeedsDisplay)
    UIViewContentModeCenter,             
 // contents remain same size. positioned adjusted.
    UIViewContentModeTop,
    UIViewContentModeBottom,
    UIViewContentModeLeft,
    UIViewContentModeRight,
    UIViewContentModeTopLeft,
    UIViewContentModeTopRight,
    UIViewContentModeBottomLeft,
    UIViewContentModeBottomRight,
};
//使用方法
[ImageView setContentMode:UIViewContentModeScaleAspectFit];
//OR
ImageView.contentMode = UIViewContentModeScaleAspectFit;
//以下方法,圖片保持原有大小比例的情況下,展示在ImageView的上下左右等位置;如果視圖大小小于圖片的尺寸,則圖片會超出視圖邊界;
    UIViewContentModeTop,
    UIViewContentModeBottom,
    UIViewContentModeLeft,
    UIViewContentModeRight,
    UIViewContentModeTopLeft,
    UIViewContentModeTopRight,
    UIViewContentModeBottomLeft,
    UIViewContentModeBottomRight,
    UIViewContentModeCenter,  
    UIViewContentModeScaleToFill,  //根據(jù)視圖的比例去拉伸圖片內(nèi)容。圖片可能變形;
    UIViewContentModeScaleAspectFit,  //保持圖片內(nèi)容的縱橫比例,來適應視圖的大小。
    UIViewContentModeScaleAspectFill,   //用圖片內(nèi)容來填充視圖的大小,多余得部分可以被修剪掉來填充整個視圖邊界。 
    UIViewContentModeRedraw,     //這個選項是單視圖的尺寸位置發(fā)生變化的時候通過調(diào)用setNeedsDisplay方法來重新顯示。       

以上就是iOS開發(fā)image背景圖片拉伸問題解決分析的詳細內(nèi)容,更多關(guān)于iOS image背景圖片拉伸的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解iOS Project和Targets配置

    詳解iOS Project和Targets配置

    本篇文章給大家分享了一篇關(guān)于在IOS中配置Project和Targets的相關(guān)文章,有這方面需要的朋友參考下吧。
    2018-01-01
  • iOS各種ViewController控制器使用示例完整介紹

    iOS各種ViewController控制器使用示例完整介紹

    這篇文章主要為大家介紹了iOS各種ViewController控制器使用示例完整介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • iOS中WKWebView白屏問題的分析與解決

    iOS中WKWebView白屏問題的分析與解決

    最近在工作中遇到了WKWebView白屏的問題,所以這篇文章主要給大家介紹了關(guān)于iOS中WKWebView白屏問題的分析與解決方法,文中通過示例代碼介紹的非常詳細,對同樣遇到這個問題的朋友具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-10-10
  • Objective-C的UIStackView常用屬性函數(shù)學習筆記

    Objective-C的UIStackView常用屬性函數(shù)學習筆記

    這篇文章主要為大家介紹了Objective-C的UIStackView常用屬性函數(shù)學習筆記,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • iOS中定位(location manager )出現(xiàn)log日志的解決辦法

    iOS中定位(location manager )出現(xiàn)log日志的解決辦法

    這篇文章主要給大家介紹了關(guān)于iOS中定位(location manager )出現(xiàn)log日志的解決辦法,文中通過示例代碼將解決的辦法介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧。
    2017-10-10
  • IOS 開發(fā)之操作圖庫自定義控制器

    IOS 開發(fā)之操作圖庫自定義控制器

    這篇文章主要介紹了IOS 開發(fā)之操作圖庫自定義控制器的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • iOS?項目嵌入Flutter?運行(最新推薦)

    iOS?項目嵌入Flutter?運行(最新推薦)

    這篇文章主要介紹了iOS?項目嵌入Flutter?運行,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • iOS仿微信搖一搖動畫效果加震動音效實例

    iOS仿微信搖一搖動畫效果加震動音效實例

    這篇文章主要介紹了iOS仿微信搖一搖動畫效果加震動音效實例,詳細介紹了微信搖一搖功能的實現(xiàn)原理,非常具有實用價值,需要的朋友可以參考下。
    2017-03-03
  • 詳解iOS 輕松獲取當前控制器的正確方式

    詳解iOS 輕松獲取當前控制器的正確方式

    這篇文章主要介紹了詳解iOS 輕松獲取當前控制器的正確方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • iOS實現(xiàn)自動循環(huán)播放的banner實例詳解

    iOS實現(xiàn)自動循環(huán)播放的banner實例詳解

    輪播視圖通常也叫Banner,90%以上App都會用到的一個控件,網(wǎng)上有很多開源代碼,下面這篇文章主要給大家介紹了關(guān)于利用iOS如何實現(xiàn)自動循環(huán)播放的banner的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2017-12-12

最新評論

南安市| 双城市| 定襄县| 西平县| 安塞县| 庄浪县| 永嘉县| 庐江县| 无棣县| 临邑县| 扬中市| 静乐县| 射洪县| 缙云县| 包头市| 昂仁县| 丰都县| 通榆县| 连山| 安多县| 新绛县| 鲁甸县| 什邡市| 怀安县| 江川县| 上蔡县| 孟村| 米易县| 广宗县| 湖南省| 运城市| 黄石市| 洛川县| 阳城县| 普格县| 正蓝旗| 鄂州市| 禄劝| 天门市| 武隆县| 格尔木市|