前言 : 在開發(fā)中我們經(jīng)常會遇到一些小問題或者是發(fā)現(xiàn)一些小技巧,但我們往往都是覺得自己這次知道了就好了,并沒記錄起來,做了那么久開發(fā)難免會遺忘基礎(chǔ),那么我就把一些常用的常遇到的小技巧總結(jié)起來
總結(jié)(篇章二) ->之前那第一篇得到了大家的支持,我會繼續(xù)發(fā)布完整
- 設(shè)置圖片的內(nèi)容模式 (新手會比較糾結(jié))
// 1. 設(shè)置圖片的內(nèi)容模式 (設(shè)置為不會變形的填充模式)
imageView.contentMode = UIViewContentModeScaleAspectFill;
// 2. 裁剪超出的內(nèi)容
imageView.clipsToBounds = YES;
// 重繪Redraw ,這個牽扯到核心繪圖drawRact,后面會詳解這方面的技巧
UIViewContentModeRedraw,
// 帶Scale單詞: 表明圖片有可能會 變形(拉伸或者壓縮)
UIViewContentModeScaleToFill,
// 帶有Aspect單詞: 會等比例縮放圖片(一定不會變形)
// 補充:等比例縮放與變形是兩回事,別混淆
// fit:自適應(yīng)(圖片等比例顯示完整,如果內(nèi)容區(qū)過大會留白)
UIViewContentModeScaleAspectFit,
// fill:填充(填充滿圖片內(nèi)容區(qū),但圖片過大時會導(dǎo)致圖片顯示不完全)
UIViewContentModeScaleAspectFill,
// 不帶Scale單詞: 表明圖片不可能被拉伸或者壓縮(變形)
UIViewContentModeCenter, // 居中顯示
UIViewContentModeTop, // 顯示頂部
UIViewContentModeBottom, //顯示底部
UIViewContentModeLeft, //左
UIViewContentModeRight, //右
UIViewContentModeTopLeft, //上+左
UIViewContentModeTopRight, //上+右
UIViewContentModeBottomLeft, //底+左
UIViewContentModeBottomRight, //底+右
- 圖片的'兩種加載方式'所引發(fā)的'兩種資源存放方式'
->圖片的兩種加載方式:
加載方式一: imageNamed:
//此方式加載圖片,就算沒有強指針指向,也不會從內(nèi)存中被干掉 (默認帶有緩存)
//使用場景:圖片經(jīng)常會被使用或是少量的圖片
// 例子:
imageView.image = [UIImage imageNamed:@"photo.jpg"];
//
加載方式二: imageWithContentsOfFile:
//此方式加載圖片,如果沒有強指針指向,就會從內(nèi)存中被干掉 (默認不帶有緩存)
使用場景:圖片不經(jīng)常被使用或是大批量的圖片
// 例子 (自由路徑):
imageView.image = [UIImage imageWithContentsOfFile:@"/Users/zhq/Desktop/UI小技巧/總結(jié)/資源/圖片/photo.jpg"];
// 例子 (資源包的路徑)
NSString *path = [[NSBundle mainBundle] pathForResource:@"photo.jpg" ofType:nil];
imageView.image = [UIImage imageWithContentsOfFile:path];
//
->資源的兩種存放方式
存放方式一. Assets.xcassets:
1.在資源包中對應(yīng)的是Assets.car
2.放到Assets.xcassets中的圖片是無法獲取到路徑的
3.只能通過imageNamed:這種方式來加載圖片
4.不能通過imageWithContentsOfFile:這種方式來加載圖片
5.放到Assets.xcassets中的圖片默認就帶有緩存
存放方式二. 放到項目目錄中:
1.圖片資源會被打包到MainBundle中 (注意回看 例子(資源包的路徑))
2.能夠獲取到圖片的路徑
3.即能通過imageNamed:這種方式來加載圖片
4.也能通過imageWithContentsOfFile:這種方式來加載圖片
- 關(guān)于毛玻璃,看過很多文章都在神話這技術(shù),或者不知道這個東西的人會覺得這個可能很難,實質(zhì)上這個東西 簡 單 的 很 !!!!!!!!!!!!!
//1. 創(chuàng)建毛玻璃(實質(zhì)上是工具欄)
UIToolbar *toolBar = [[UIToolbar alloc] init];
//2. 設(shè)置尺寸
toolBar.frame = imageView.bounds;
//3. 設(shè)置工具欄的樣式
toolBar.barStyle = UIBarStyleBlack;
//4. 設(shè)置透明度
toolBar.alpha = 0.98;
//5. 加入到需要被模糊化的視圖中
[imageView addSubview:toolBar];
- 關(guān)于九宮格的算法,有些初學(xué)者會覺得比較難,還有些人九宮格會了然后看見4個格子,7個格子,13個格子就懵逼了,不管多少格子,實質(zhì)算法都是一樣的
// 計算出 格子的x值 和 格子的y值 (萬能公式)
CGFloat x = (列距 + 格子寬度) * (格子角標(biāo) % 總列數(shù));
CGFloat y = (行距 + 格子高度) * (格子角標(biāo) / 總列數(shù));
補充:
1.列距:指在"一行"當(dāng)中,每個格子間的'水平'距離
2.行距:指在"行與行"之間,行與行之間的'豎直'距離
3.格子角標(biāo):第一個格子為0,計算完后依次遞增
4.總列數(shù): 取某行當(dāng)中最大的列數(shù)
5.格子寬度和高度:指的是每個格子'自身'的寬高
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。