亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

中級篇第一期:UIButton內部再利用

發布時間:2020-09-22 13:20:08 來源:網絡 閱讀:190 作者:孫婉華_528 欄目:移動開發

中級篇第一期:UIButton內部再利用     中級篇第一期:UIButton內部再利用


當大家看到這兩個圖的時候,如果你沒有看本文的標題,我想你的第一認識絕對是View里面包了一個ImageView和一個Label,沒錯,其實UIButton的內部就是這個構造,圖1是由咱們原生的,而圖2則是咱們衍生的,在項目開發過程中,會有很多情況利用到圖2或更多相關衍生的現象,本期為大家做一個簡單的例子,在項目中如何利用UIButton的內部構造


我們如何實現圖1到圖2的轉化,先為大家介紹圖中的各個顏色區域所表示的內容

橙色為當前View的背景色,紅色為Button的背景色,藍色為Button中的TitleLabel,圖片為Button中的ImageView


在閱讀下面代碼前,請大家一定要了解bounds的具體意義



//根據效果圖1我們先來獲得p_w_picpathView的center
CGPoint p_w_picpathViewCenterNow = button.p_w_picpathView.center;

//根據效果圖1我們先來獲得titleLabel的center
CGPoint titleLabelCenterNow = button.titleLabel.center;

//獲得Button的Center
CGPoint buttonBoundsCenter = CGPointMake(CGRectGetMidX(button.bounds), CGRectGetMidY(button.bounds));

//根據效果圖2我們先來獲得p_w_picpathView最終想要得到的center
CGPoint p_w_picpathViewCenter = CGPointMake(buttonBoundsCenter.x, CGRectGetMidY(button.p_w_picpathView.bounds));

//根據效果圖2我們再來獲得titleLabel最終想要得到的center
CGPoint titleLabelCenter = CGPointMake(buttonBoundsCenter.x, CGRectGetHeight(button.bounds) - CGRectGetMidY(button.titleLabel.bounds));

//根據兩個圖的差異我們來設置p_w_picpathEdgeInsets
//因為我們要將圖上移,所以top一定是負值,bottom一定是正值,因為我們要將圖右移,所以left一定是正值,right一定是負值
CGFloat p_w_picpathEdgeInsetsTop = p_w_picpathViewCenter.y - p_w_picpathViewCenterNow.y;

CGFloat p_w_picpathEdgeInsetsLeft = p_w_picpathViewCenter.x - p_w_picpathViewCenterNow.x;

CGFloat p_w_picpathEdgeInsetsBottom = -p_w_picpathEdgeInsetsTop;

CGFloat p_w_picpathEdgeInsetsRight = - p_w_picpathEdgeInsetsLeft;

UIEdgeInsets p_w_picpathInsets = UIEdgeInsetsMake(p_w_picpathEdgeInsetsTop, p_w_picpathEdgeInsetsLeft, p_w_picpathEdgeInsetsBottom, p_w_picpathEdgeInsetsRight);

button.p_w_picpathEdgeInsets = p_w_picpathInsets;

//根據兩個圖的差異我們來設置titleEdgeInsets,跟p_w_picpath同理
CGFloat titleEdgeInsetsTop = titleLabelCenter.y - titleLabelCenterNow.y;

CGFloat titleEdgeInsetsLeft = titleLabelCenter.x - titleLabelCenterNow.x;

CGFloat titleEdgeInsetsBottom = -titleEdgeInsetsTop;

CGFloat titleEdgeInsetsRight = -titleEdgeInsetsLeft;

UIEdgeInsets titleInsets = UIEdgeInsetsMake(titleEdgeInsetsTop, titleEdgeInsetsLeft, titleEdgeInsetsBottom, titleEdgeInsetsRight);

button.titleEdgeInsets = titleInsets;




沒錯,這就是UIButton的內部再利用,小伙伴們有沒有想過,Button其實可以這么玩,由于時間有限,在這里就介紹這么多,歡迎校友們繼續探索并補充,如有更好的想法,請分享到技術群里,我們一起來討論




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江达县| 晋宁县| 巢湖市| 大方县| 徐汇区| 焦作市| 确山县| 牡丹江市| 蛟河市| 肥东县| 抚松县| 昔阳县| 太仆寺旗| 苏尼特左旗| 荣昌县| 睢宁县| 台北市| 彩票| 上高县| 玉门市| 黑山县| 南充市| 吉木萨尔县| 华宁县| 岗巴县| 乌兰县| 伊金霍洛旗| 铜川市| 县级市| 贺兰县| 南宫市| 抚州市| 大连市| 红桥区| 华亭县| 中西区| 霍城县| 台山市| 巧家县| 定陶县| 安仁县|