iOS自定义后台背景图片

之前在360的App里看到一个有趣的东西,就是当应用进入后台后再查看后台程序的时候,程序的截图是一个自定义的图片,而不是App的截图,感觉还蛮有用的(可以做广告或者自定义)。其实要实现这个效果很简单,因为系统把截图存放在App的沙盒里面的,所以我们只需要在App进入后台以后将原来截图替换掉就可以了

直接看效果

record.gif

关键代码如下:

var downscaledPath = NSHomeDirectory() +
    "/Library" +
    "/Caches" +
    "/Snapshots" +
    "/\(NSBundle.mainBundle().bundleIdentifier!)" + "/downscaled"

var existedImageName:String? {
    let fileMgr = NSFileManager.defaultManager()
    
    do
    {
        return try fileMgr
        .contentsOfDirectoryAtPath(downscaledPath)
        .filter {
            return $0.hasSuffix("png")
        }.first
    } catch let e {
        print(e)
        return nil
    }
}

var replaceImageData:NSData {
    let path = NSBundle.mainBundle().pathForResource("notice.jpg", ofType: nil)!
    return NSData(contentsOfFile: path)!
}

func replaceExistsedImage() {
    guard let _ = existedImageName else {
        return
    }
    
    replaceImageData.writeToFile(downscaledPath + "/\(existedImageName!)", atomically: true)
}

func applicationDidEnterBackground(application: UIApplication) {
    delay(0.5) {
        self.replaceExistsedImage()
    }
}

downscaledPath:系统存放App截图的目录
existedImageName:系统存放具体的截图
replaceImageData:需要替换系统截图的图片

当然这只是个原理Demo, 我们还需要针对不同的设备提供不同的图片,而且还要判断截图时候的设备横纵方向做一些其他操作

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容