gpt4 book ai didi

ios - 在第二台显示器上显示iOS屏幕

转载 作者:行者123 更新时间:2023-12-01 16:44:11 28 4
gpt4 key购买 nike

我想使用airplay或HDMI适配器在大屏幕上演示我的iOS应用。

问题是我的应用程序仅以纵向模式运行,并且大多数电视的纵横比为16:9,因此iPhone屏幕非常小。为了解决这个问题,我想旋转电视并旋转iPhone的输出以显示更大的图像。

在iOS6中,我使用CADisplayLink拍摄了当前屏幕的快照,然后将其绘制在外部屏幕上。不幸的是,旧代码无法在iOS 7上正常工作,并且有些落后。有一个好的框架吗?

如果您没有任何框架建议,则可以帮助我提高效率吗?

我的代码当前如下所示:

- (UIImage *) screenshot {
UIView* view = [[UIScreen mainScreen] snapshotViewAfterScreenUpdates:YES];
UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, [UIScreen mainScreen].scale);

[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES];


UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}

- (void)drawFrame
{
UIImageView* contentView = (UIImageView *)[self.secondWindow.rootViewController.view viewWithTag:[@"contentView" hash]];
CGImageRef screenImg = [self screenshot].CGImage;//UIGetScreenImage();

contentView.image = [UIImage imageWithCGImage:screenImg scale:1.0 orientation:UIImageOrientationLeft];
}

最佳答案

我这样更改了屏幕截图功能,以使其在iPhone 5s上足够快地工作:

- (UIImage *) screenshot {
UIView* view = [[[[UIApplication sharedApplication] delegate] window] rootViewController].view;
UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 2);
CGContextSetInterpolationQuality(UIGraphicsGetCurrentContext(), kCGInterpolationNone);
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:NO];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}

在更改第一行之前,iPhone屏幕上还出现了一些屏幕闪烁。更改InterpolationQuality也有所帮助。

如果您在较旧的iPhone上运行代码,则还可以尝试将ImageContext的scale( UIGraphicsBeginImageContextWithOptions函数的最后一个参数)设置为 1。这将在第二个屏幕上禁用“视网膜”分辨率,并使渲染速度更快!

关于ios - 在第二台显示器上显示iOS屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21529541/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com