iOS-Runtime-Headers icon indicating copy to clipboard operation
iOS-Runtime-Headers copied to clipboard

How to set the wallpaper in iOS10?

Open 6ag opened this issue 8 years ago • 4 comments

I can use the class PLStaticWallpaperImageViewController on iOS9.x.x. But after the upgrade iOS10 not be able to do so.

6ag avatar Oct 09 '16 07:10 6ag

- (id)getWallPaperVCWithImage:(UIImage *)image
{
    Class wallPaperClass = NSClassFromString(@"PLStaticWallpaperImageViewController");
    id wallPaperInstance = [[wallPaperClass alloc] performSelector:NSSelectorFromString(@"initWithUIImage:") withObject:image];
    [wallPaperInstance setValue:@(YES) forKeyPath:@"saveWallpaperData"];
    return wallPaperInstance;
}

- (void)saveAndAsScreenPhotoWithImage:(UIImage *)image imageScreen:(UIImageScreen)imageScreen finished:(void (^)(BOOL success))finished
{
    [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
        if (PHAuthorizationStatusAuthorized == status) {

            // 保存需要设置为壁纸的图片到相册
            UIImageWriteToSavedPhotosAlbum(image, nil,nil, NULL);

            // 获取壁纸控制器
            id wallPaperVc = [self getWallPaperVCWithImage:image];

            if (wallPaperVc) {
                switch (imageScreen) {
                    case UIImageScreenHome:
                    {
                        if (self.on) {
                            [wallPaperVc performSelector:NSSelectorFromString(@"setImageAsHomeScreenClicked:") withObject:image];
                        }
                    }
                        break;
                    case UIImageScreenLock:
                    {
                        if (self.on) {
                            [wallPaperVc performSelector:NSSelectorFromString(@"setImageAsLockScreenClicked:") withObject:image];
                        }
                    }
                        break;
                    case UIImageScreenBoth:
                    {
                        if (self.on) {
                            [wallPaperVc performSelector:NSSelectorFromString(@"setImageAsHomeScreenAndLockScreenClicked:") withObject:image];
                        }
                    }
                        break;
                    default:
                        break;
                }
                finished(YES);
            } else {
                finished(NO);
            }
        } else {
            // 无权限
            finished(NO);
        }
    }];
}

Can you help me?

6ag avatar Oct 09 '16 07:10 6ag

+1

makleso6 avatar Aug 29 '17 08:08 makleso6

Apple now requires the SpringBoard or Photos entitlement for updating the wallpaper. Therefore it is impossible to do this even with private api’s.

MTJailed avatar Jun 24 '18 23:06 MTJailed

i am unable to add file PLStaticWallpaperImageViewController. When i add by framework it shows linker error please help

meetiosdev avatar Apr 15 '19 13:04 meetiosdev