由于iOS的更改,WrightsCS的答案在某些时候停止了工作。不幸的是,如果您想使用未记录的功能,则必须忍受这些。如果仍然需要执行此操作,则仅对于非App Store应用程序,此代码可在iOS 9.3中使用。不过,它可能会在将来的任何iOS版本中停止工作。(请参阅下面的评论:不再在iOS 10中工作)#import "SBSUIWallpaperPreviewViewController.h"#import <dlfcn.h>// open the private framework dynamicallyvoid *handle = dlopen("/System/Library/PrivateFrameworks/SpringBoardUIServices.framework/SpringBoardUIServices", RTLD_NOW);UIImage *wallpaper = [UIImage imageNamed: @"background.jpg"];Class sbClass = NSClassFromString(@"SBSUIWallpaperPreviewViewController");// we create a view controller, but don't display it. // just use it to load image and set wallpaperSBSUIWallpaperPreviewViewController *controller = (SBSUIWallpaperPreviewViewController*)[[sbClass alloc] initWithImage: wallpaper];[controller setWallpaperForLocations: 3]; // 3 -> set both for lock screen and home screendlclose(handle);您需要将私有API标头添加到您的项目中。通常,您可以通过一些搜索在网上找到这些内容,例如,此处。另外,在上述的例子中,[SBSUIWallpaperPreviewViewController setWallpaperForLocations:]被调用的3参数:3表示图像应被用于两个锁和主画面。1表示仅锁定屏幕。2仅指示主屏幕。有关为什么我要动态打开此框架的说明,请参见此处的相关答案。关于铃声我没有答案。这确实应该是一个单独的问题:完全不同的API在起作用。