91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

百色市| 昆山市| 焉耆| 凌源市| 云梦县| 尖扎县| 买车| 惠水县| 防城港市| 九江市| 永清县| 家居| 鞍山市| 盐边县| 南涧| 鸡西市| 瑞丽市| 永清县| 九龙坡区| 南京市| 阿坝县| 湟中县| 冀州市| 吉林市| 三河市| 台安县| 镶黄旗| 东台市| 泊头市| 抚宁县| 三原县| 昭苏县| 奉节县| 弋阳县| 黑河市| 陇南市| 湘潭市| 军事| 绵竹市| 安国市| 南安市|