TestFlight All In One-編程思維

TestFlight All In One 測試版 https://testflight.apple.com/ iOS 或 iPadOS 版 通過電子郵件或公開鍊接邀請安裝 Beta 版 iOS 或 iPadOS App https://apps.apple.com/cn/app/testflight/id899247664 macOS 版 通過電子郵件或公開鍊接邀請安裝 Beta 版

【已開源】Flutter 穿山甲廣告插件的集成-FlutterAds-編程思維

前言 上篇文章我們聊了國内各大廣告平台對 Flutter 的支持程度和我為什麼創建 FlutterAds 來構建優質的 Flutter 廣告插件,幫助開發者獲利。本篇我們來看看Flutter 穿山甲廣告插件 flutter_pangle_ads 的集成和使用。 移動端廣告形式 在移動端大體分為 5 種廣告形式,分别是 開屏、插屏、Banner、信息流、激勵視頻。随着短視頻的崛起,出現了新的全屏視

加載GIF圖片優化方案-編程思維

前言 許多項目需要加載GIF圖片,但是在直接使用UIImageView加載存在許多問題,于是查找資料做了一個加載GIF的Demo,思路來源。 思路 使用FLAnimatedImage來加載GIF圖片,再利用SDWebImage來做緩存,話不多說,直接上代碼。 使用方法 導入頭文件#import "GIFView.h" 創建GIFView,添加到視圖上 GIFView *view = [[G

iOS開發之HTTP斷點續傳-編程思維

前言 在APP中經常會遇到文件下載,鑒于用戶體驗和流量控制,就需要用到斷點續傳。本文主要對斷點續傳進行了多線程封裝。 效果圖 原理 HTTP實現斷點續傳是通過HTTP報文頭部header裡面設置的兩個參數Range和Content-Range實現。 HTTP文件斷點續傳理論 代碼部分 一、文件大小記錄 在下載文件的時候,需要先獲取到文件的總大小,這裡使用URL作為Key,對文件屬性進行擴展

iOS開發之Lame編譯-編程思維

前言 為了保證音頻格式在多端通用,需要将音頻轉化為MP3格式,本文講解了如何使用Shell腳本來編譯lame庫。 編譯腳本 #!/bin/sh CONFIGURE_FLAGS="--disable-shared --disable-frontend" ARCHS="arm64 armv7s armv7 x86_64 i386" MIN_VERSION="10.0" # directori

iOS開發之Video轉GIF-編程思維

前言 最近遇到需要将video轉化為gif的問題,網上找的在線轉換限制太多,索性就自己寫了一個工具APP。文章末尾有開源代碼和打包好的APP,如有需要請自行下載。 效果圖 核心代碼 來源 class MP4ToGIF { private var videoUrl: URL! init(videoUrl: URL) { self.videoUrl = videoU

iOS開發之GIF轉MP4-編程思維

前言 最近遇到需要将gif轉化為mp4的問題,網上找的在線轉換限制太多,索性就自己寫了一個工具APP。文章末尾有開源代碼和打包好的APP,如有需要請自行下載。 效果圖 核心代碼 來源 import ImageIO #if os(iOS) import MobileCoreServices #elseif os(OSX) import CoreServices #endif class GIF

iOS開發之轉盤菜單-編程思維

前言 使用Swift實現的轉盤菜單,主要用到UIBezierPath、CALayer遮罩繪制扇形UIView,CATransform3DMakeRotation實現旋轉動畫。代碼設計使用默認configureCallback回調方便創建和設置基本屬性,參考UITableView代理和數據源模式,支持AutoLayout和Frame。 效果圖 1.遮罩繪制扇形View 計算扇形曲線位置,通過CA

Block循環引用詳解-編程思維

前言 在項目中經常用到block,使用不當就很容易因為循環引用而造成内存洩漏。本文分析了block循環引用形成原因以及處理辦法,如果有什麼不對或者疑問請留言。 什麼情況下block會造成循環引用 block為了保證代碼塊内部對象不被提前釋放,會對block中的對象進行強引用,就相當于持有了其中的對象,而如果此時block中的對象又持有了該block,就會造成循環引用。 常見誤區 1.所有bloc

iOS開發之蜂窩布局—Swift-編程思維

前言 最近項目中用到了類似蜂窩的六邊形布局,在這裡分享出來抛磚引玉,供大家參考學習。本文提供了2種思路實現效果,第一種方式使用UICollectionView實現,第二種方式使用UIScrollView實現,兩種方式底層核心思想是一緻的。 效果圖 一、UICollectionView 由于UICollectionView自身提供很多屬性,所以隻需要自定義UICollectionViewFlow

使用AVPlayer自定義支持全屏的播放器(五)—Swift重構版本-編程思維

前言 很早之前開源了一個簡單的視頻播放器,由于年久失修,效果慘目忍睹,最近特意花時間對其進行了深度重構。舊版本後期不再維護,新版本使用Swift實現,後續會增加更多功能。不想看文字的請自行下載代碼------>>>CLPlayer 舊版本 VS 重構版本 1.新版本使用Swift,舊版本使用Objective-C 2.新版本采用自定義轉場實現全屏,舊版本使用旋轉屏幕 3.新版本

移動端H5-iPhone安全距離適配-編程思維

安全區域? 安全區域指的是一個可視窗口範圍,處于安全區域的内容不受圓角(corners)、齊劉海(sensor housing)、小黑條(Home Indicator)影響,如下圖藍色區域: 也就是說,我們要做好適配,必須保證頁面可視、可操作區域是在安全區域内。 更詳細說明,參考文檔:Human Interface Guidelines - iPhoneX viewport-fit iOS11

iOS 手寫簽名并保存為圖片-編程思維

項目中用到需要手寫簽名并保存為圖片的需求 大緻思路就是利用UIBezierPath曲線将手勢滑動的坐标繪制處理,然後利用CoreGraphics保存為圖片 @interface CustomerSignatureView : UIView /** * 獲取簽名圖片 */ - (UIImage *)getSignatureImage; /** * 重置簽名 */ - (void)clea

iOS内存管理機制-編程思維

與其他的操作系統一樣,iOS系統也會對虛拟内存和物理内存進行分頁,虛拟内存到物理内存的映射都是以頁(Page)為最小粒度的。 A7以前處理器的系統,物理内存和虛拟内存按照4KB分頁。A7和A8處理器的系統,物理内存按照4KB分頁,虛拟内存按照16KB分頁。A9處理器的系統,物理和虛拟内存都是以16KB進行分頁。 UE4的log中打印的頁面大小為16KB: [2021.04.10-11.50.3

iOS 處理應用第一次啟動無法聯網的情況-編程思維

iOS應用在客戶第一次安裝的時,會請求網絡權限,此時就算用戶點擊了同意網絡權限,網絡請求此時可能也已經失敗,需要在客戶點擊了同意的時候,重新發起新的網絡請求 監聽網絡權限這裡采用CoreTelephony/CTCellularData.h這個庫來監聽,具體操作流程 1、創建CTCellularData并監聽網絡狀态(監聽是在異步線程監聽,如果設計到顯示UI的需要到主線程刷新) 2、監聽到kCTC

為遊戲接入ios sdk的oc學習筆記-編程思維

開發手機遊戲,需要接入ios的sdk,截止2021年7月23日雖然swift已經推出一些年頭,但對于大部分的渠道sdk,還是oc的代碼。 oc不僅僅用來開發ios,還是mac上的app開發語言 從新手到入門 新手教程 object c的簡寫是objc,很多類都是NS開頭,這是喬布斯離開蘋果後自己創立的NeSt公司的簡寫 基礎知識:.mm是objc++的代碼,.cpp是C++的代碼,.m是objc