iOS開發 新增乙個全域性懸浮按鈕

2021-08-17 18:50:31 字數 2379 閱讀 1331

背景介紹 :在普通的ios開發組中,一般測試機都不止一台,但是我們在開發的時候,不可能每台測試機時刻保持最新的**,這就出現了乙個問題,當測試測出問題的時候,(或者產品突然拿去點點看的時候出了問題)如果不知道當前的版本,可能不確定是什麼時候出的問題。

解決方案:如果當前環境是測試服的時候,展示乙個全域性浮動標籤,這樣不僅看到此標誌就告訴測試(包括我們自己)當前的環境,當出現問題的時候,通過標籤,可以快速定位當前問題發生的版本號等等

需求設計圖.png

思路:

知識1:按鈕顯示2行文字

//uibutton的換行顯示

//然後如同title的內容用包含「\n」就會換行

title = @「123\n666」

知識2:version 與 build號的獲取
nsstring *versionstr = [[[nsbundle

知識3:控制項的移動 - 本質上:座標 ++

//拖動改變控制項的水平方向x值

- (cgrect)changexwithframe:(cgrect)originalframe point:(cgpoint)point

return originalframe;

}//拖動改變控制項的豎直方向y值

- (cgrect)changeywithframe:(cgrect)originalframe point:(cgpoint)point

return originalframe;

}

知識4:控制項的移動 - 越界處理(跑到螢幕外了)
//記錄該button是否螢幕越界

bool isover = no;

if (frame.origin.x < 0) else

if (frame.origin.x + frame.size.width > screenw)

if (frame.origin.y < 0) else

if (frame.origin.y+frame.size.height > screenh)

if (isover) ];

}

知識5:封裝需求 - 如果限制只能水平 or 豎直滑動 or 全域性滑動
mnassistivetouchtypenone = 0,         //沒限制隨便移動

mnassistivetouchtypeverticalscroll, //只能垂直移動

mnassistivetouchtypehorizontalscroll, //只能豎直移動

switch (type) case mnassistivetouchtypehorizontalscroll:

case mnassistivetouchtypeverticalscroll:

}

使用方法
1.引入「mnassistivebtn」檔案
//示例demo樣式

mnassistivebtn *btn = [mnassistivebtn mn_touchwithtype:mnassistivetouchtypehorizontalscroll

frame:frame

title:title

titlecolor:[uicolor whitecolor]

titlefont:[uifont systemfontofsize:11]

backgroundcolor:nil

backgroundimage:[uiimage imagenamed:@"test"]];

[self.window addsubview:btn];

最終樣式展示~

ios新增全域性懸浮按鈕 iOS 懸浮按鈕

想要做出懸浮在螢幕上的按鈕效果,按鈕可以隨便移動位置,其實很簡單的,沒有想象中的那麼難,其中有兩種方法可以做出這樣的效果.看下面,一一介紹兩種方法,根據需要,選擇適合自己的呦 效果圖呈現 接下來看 1.建立button 2.新增手勢,移動button 下面我就將我寫的 全部放在這,想試試的親可以貼上...

ios 為程式新增乙個懸浮框

一 uiwindow的簡介 2.ios程式啟動完畢後,建立的第乙個檢視控制項就是uiwindow,接著建立控制器的view,最後將控制器的view新增到uiwindow上,於是控制器的view就顯示在螢幕上了 3.乙個ios程式之所以能顯示到螢幕上,完全是因為它有uiwindow。也就說,沒有uiw...

iOS開發之實現可拖拽懸浮按鈕

原理 在按鈕上新增拖拽手勢uipangesturerecognizer,獲取手勢移動的偏移值,然後重新設定按鈕的位置為按鈕位置加上偏移值。注意拖拽位置不要超出螢幕位置。最後移除手勢是現在在arc記憶體管理模式的規範 風格,類似的有在dealloc裡面移除通知 定時器。因為以前在mrc時候是手動建立記...