您好,登錄后才能下訂單哦!
當大家看到這兩個圖的時候,如果你沒有看本文的標題,我想你的第一認識絕對是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其實可以這么玩,由于時間有限,在這里就介紹這么多,歡迎校友們繼續探索并補充,如有更好的想法,請分享到技術群里,我們一起來討論
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。