中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

中級篇第一期: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

郴州市| 镇远县| 敦化市| 桂平市| 交城县| 通渭县| 黄平县| 鲁山县| 溧水县| 祁连县| 青川县| 克什克腾旗| 井研县| 东海县| 南木林县| 义乌市| 镇雄县| 宣武区| 临沭县| 湘西| 邢台市| 敖汉旗| 沂源县| 铜鼓县| 新泰市| 准格尔旗| 巴中市| 阳江市| 监利县| 南通市| 蕲春县| 沧州市| 和平区| 双牌县| 宝坻区| 房产| 大丰市| 上饶县| 西城区| 明溪县| 读书|