GVKun编程网logo

iOS 选取用户相册中的图片 UIImagePickerController Swift(ios选取照片)

2

此处将为大家介绍关于iOS选取用户相册中的图片UIImagePickerControllerSwift的详细内容,并且为您解答有关ios选取照片的相关问题,此外,我们还将为您介绍关于cocos2d-x

此处将为大家介绍关于iOS 选取用户相册中的图片 UIImagePickerController Swift的详细内容,并且为您解答有关ios选取照片的相关问题,此外,我们还将为您介绍关于cocos2d-x横版项目调用 ios UIImagePickerController、iOS 18发布啦!iOS 18好吗?iOS 18值得更新吗?iOS 18beta版、iOS swift sonarQube 命令 ./run-sonar-swift.sh -v 抛出错误、ios – Swift 3发布后,Swift 2应用程序是否可以运行?的有用信息。

本文目录一览:

iOS 选取用户相册中的图片 UIImagePickerController Swift(ios选取照片)

iOS 选取用户相册中的图片 UIImagePickerController Swift(ios选取照片)

iOS 选取用户相册中的图片 UIImagePickerController

[GitHub] iOS Demo : https://github.com/KyleBing/iosDemo
该文中的例子可以从上面这个 github 项目中找到,包含许多其它常用 UI 组件的使用

选取用户相册中图片,或者拍照的方式通过 UIImagePickerController 来实现

内容

从相册中选取一张图片,并按比例显示在当前 ViewController 的中间位置

步骤

VC = ViewController 方便说明,所以简写
  1. 在当前 VC 中 实现 UIImagePickerControllerDelegateUINavigationController 这两个协议
  2. 新建一个 picker: UIImagePickerControllerimageView: UIImageView
  3. 设置这个 picker 的 delegate 是 当前 VC
  4. 设置 imageView 的内容展示属性:比例缩放
  5. 设置选取照片的触发方法,比如在 NavigationBar 中添加一个按钮
  6. 实现 UIImagePickerControllerDelegate 的两个方法

    1. 用户选中一张图片时:获取 info 中的信息并进行相关操作,最后使选择窗口消失
    2. 用户取消选择时,使选择窗口消失

效果

uiImagePicker.JPG

代码及注释

//
//  ImagePickerVC.swift
//  iosDemo
//
//  Created by Kyle on 2020/3/16.
//  Copyright © 2020 KyleBing. All rights reserved.
//

import UIKit

/// 0. 这个 ViewController  需要实现 UIImagePickerControllerDelegate 和 UINavigationControllerDelegate 两个协议
class ImagePickerVC: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    
    /// 1. 新建 UIImagePickerController 对象
    var imagePicker: UIImagePickerController = UIImagePickerController()
    lazy var imageView = UIImageView(frame: view.frame)
    
    override func viewDidLoad() {
        super.viewDidLoad()
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Pick", style: .plain, target: self, action: #selector(pickAnImage))
        /// 2. 设置 picker 的 delegate 和 相关设置
        imagePicker.delegate = self
        imagePicker.sourceType = .photoLibrary
        /// 3. 设置 imageView 的属性
        imageView.contentMode = .scaleAspectFit
        view.addSubview(imageView)
    }
    
    
    @objc func pickAnImage(){
        /// 4. 点击选图片时,展示这个 picker controller
        present(imagePicker, animated: true) {
            print("UIImagePickerController: presented")
        }
    }
    
    // MARK: - Image picker delegate
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        /// 5. 用户选中一张图片时触发这个方法,返回关于选中图片的 info
        /// 6. 获取这张图片中的 originImage 属性,就是图片本身
        guard let selectedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage else {
            fatalError("error: did not picked a photo")
        }
        /// 7. 根据需要做其它相关操作,这里选中图片以后关闭 picker controller 即可
        picker.dismiss(animated: true) { [unowned self] in
            // add a image view on self.view
            self.imageView.image = selectedImage
        }
    }
    
    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        /// 8. 用户点击取消时
        picker.dismiss(animated: true) {
            print("UIImagePickerController: dismissed")
        }
    }
}

info 内容

__C.UIImagePickerControllerInfoKey(_rawValue: UIImagePickerControllerReferenceURL): assets-library://asset/asset.JPG?id=557741A9-A05A-468E-AFAB-9B759CB66660&ext=JPG
__C.UIImagePickerControllerInfoKey(_rawValue: UIImagePickerControllerOriginalImage): <UIImage:0x283e360a0 anonymous {2048, 1536}>
__C.UIImagePickerControllerInfoKey(_rawValue: UIImagePickerControllerMediaType): public.image
__C.UIImagePickerControllerInfoKey(_rawValue: UIImagePickerControllerImageURL): file:///private/var/mobile/Containers/Data/Application/A5875FF6-3D3C-4147-BF5B-AD850397694D/tmp/CC744A41-B42F-490E-9B5F-5AF06CDD24C4.jpeg]

cocos2d-x横版项目调用 ios UIImagePickerController

cocos2d-x横版项目调用 ios UIImagePickerController

cocos2d-x的一个横版项目需呀用到UIImagePickerController

ios直接报错,原因是不支持横版


最初自己写了ImagePickerViewController专门的ViewController来控制这块,通过addSubview竖屏没问题,但是在横屏有很多的问题

通过paush或者presentModalViewController切换之后,取得图片之后返回游戏,直接报错OpenGL错误

强制限制ImagePickerViewController的横竖屏都没有有效解决该问题,后来直接在
RootViewController添加UIImagePickerController就好了


解决办法
1、Targets > General > Deployment Info

Device Orientation 选中 Portrait 与 Landscape Left Landscape Right


2、代码RootViewController.h

#import <UIKit/UIKit.h>

@interface RootViewController : UIViewController<UIImagePickerControllerDelegate,UINavigationControllerDelegate> {

    
}
- (BOOL) prefeRSStatusBarHidden;


@end

代码RootViewController.mm
#import "RootViewController.h"
#import "cocos2d.h"
#import "platform/ios/CCEAGLView-ios.h"

#include "SimpleAudioEngine.h"
using namespace CocosDenshion;

@implementation RootViewController

/*
 // The designated initializer.  Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
- (id)initWithNibName:(Nsstring *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
        // Custom initialization
    }
    return self;
}
*/

/*
// Implement loadView to create a view hierarchy programmatically,without using a nib.
- (void)loadView {
}
*/

/*
// Implement viewDidLoad to do additional setup after loading the view,typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
}

*/
// Override to allow orientations other than the default portrait orientation.
// This method is deprecated on ios6
- (BOOL)shouldAutorotatetoInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return UIInterfaceOrientationIsLandscape( interfaceOrientation );
}

// For ios6,use supportedInterfaceOrientations & shouldAutorotate instead
//- (NSUInteger) supportedInterfaceOrientations{
//#ifdef __IPHONE_6_0
//    return UIInterfaceOrientationMaskAllButUpsideDown;
//#endif
//}
- (NSUInteger) supportedInterfaceOrientations
{
    //Because your app is only landscape,your view controller for the view in your
    // popover needs to support only landscape
    return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
}

- (BOOL) shouldAutorotate {
    return YES;
}

//- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
//{
//    return UIInterfaceOrientationPortrait;
//}

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
    [super didRotateFromInterfaceOrientation:fromInterfaceOrientation];

    auto glview = cocos2d::Director::getInstance()->getopenGLView();

    if (glview)
    {
        CCEAGLView *eaglview = (CCEAGLView*) glview->getEAGLView();
        
        if (eaglview)
        {
            CGSize s = CGSizeMake([eaglview getWidth],[eaglview getHeight]);
            cocos2d::Application::getInstance()->applicationScreenSizeChanged((int) s.width,(int) s.height);
        }
    }
}

//fix not hide status on ios7
- (BOOL)prefeRSStatusBarHidden
{
    return YES;
}

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data,images,etc that aren't in use.
}

- (void)viewDidUnload {
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}


- (void)dealloc {
    [super dealloc];
}

#pragma 拍照选择照片协议方法
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediawithInfo:(NSDictionary *)info
{
    
    [UIApplication sharedApplication].statusBarHidden = NO;
    
    Nsstring *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
    
    if ([mediaType isEqualToString:@"public.image"]){
        
        //先把图片转成NSData
        //        UIImage* image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
        UIImage* imageSrc = [info objectForKey:@"UIImagePickerControllerEditedImage"];
        float scale = 140.0f / imageSrc.size.width;
        UIImage* image = [self scaleImage:imageSrc toScale:scale];
        NSData *data;
        if (UIImagePNGRepresentation(image) == nil)
        {
            data = UIImageJPEGRepresentation(image,1.0);
        }
        else
        {
            data = UIImagePNGRepresentation(image);
        }
        
        //图片保存的路径
        //这里将图片放在沙盒的documents文件夹中
        Nsstring * DocumentsPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
        
        //文件管理器
        NSFileManager *fileManager = [NSFileManager defaultManager];
        
        //生成唯一字符串
        Nsstring* uuid = [[NSUUID UUID] UUIDString];
        
        //文件名
        Nsstring* fileName = [Nsstring stringWithFormat:@"/%@.png",uuid];
        
        //把刚刚图片转换的data对象拷贝至沙盒中 并保存为XXXXXXXX-XXXX-XXXX....XXXX.png
        [fileManager createDirectoryAtPath:DocumentsPath withIntermediateDirectories:YES attributes:nil error:nil];
        [fileManager createFileAtPath:[DocumentsPath stringByAppendingString:fileName] contents:data attributes:nil];
        
        
        //得到选择后沙盒中图片的完整路径
        Nsstring* filePath = [[Nsstring alloc]initWithFormat:@"%@%@",DocumentsPath,fileName];
        
        //关闭相册界面
        [picker dismissModalViewControllerAnimated:YES];
        
        std::string strFilePath = [filePath UTF8String];
        cocos2d::Director::getInstance()->getEventdispatcher()->dispatchCustomEvent("ImagePickerEvent",&strFilePath);
        
    }
}

#pragma mark- 缩放图片
-(UIImage *)scaleImage:(UIImage *)image toScale:(float)scaleSize
{
    UIGraphicsBeginImageContext(CGSizeMake(image.size.width*scaleSize,image.size.height*scaleSize));
    [image drawInRect:CGRectMake(0,image.size.width * scaleSize,image.size.height *scaleSize)];
    UIImage *scaledImage = UIGraphicsGetimageFromCurrentimageContext();
    UIGraphicsEndImageContext();
    return scaledImage;
}


- (void)viewWilldisappear:(BOOL)animated
{
    [super viewWilldisappear:animated];
    cocos2d::Director::getInstance()->pause();
    cocos2d::Director::getInstance()->stopAnimation();
    SimpleAudioEngine::getInstance()->pauseBackgroundMusic();
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    cocos2d::Director::getInstance()->resume();
    cocos2d::Director::getInstance()->startAnimation();
    SimpleAudioEngine::getInstance()->resumeBackgroundMusic();
}

@end

3、AppController.mm

-(void)openPhoto
{
//    ImagePickerViewController* imagePickerViewController = [[ImagePickerViewController alloc] initWithNibName:nil bundle:nil];
//    
//    [_viewController.view addSubview:imagePickerViewController.view];
//    
//    [imagePickerViewController localPhoto];
    <p><span>UIImagePickerController</span><span> *picker = [[</span><span>UIImagePickerController</span><span> </span><span>alloc</span><span>] </span><span>init</span><span>];</span></p><p><span>  </span><span>if</span><span> ([</span><span>UIImagePickerController</span><span> </span><span>isSourceTypeAvailable</span><span>:</span></p><p><span>    </span><span>UIImagePickerControllerSourceTypePhotoLibrary</span><span>]) {</span></p><p><span>    picker.</span><span>sourceType</span><span> = </span><span>UIImagePickerControllerSourceTypePhotoLibrary</span><span>;</span></p><p><span>    picker.</span><span>delegate</span><span> = </span><span>_viewController</span><span>;</span></p><p><span>    [picker </span><span>setAllowsEditing</span><span>:</span><span>YES</span><span>];</span></p><p><span>    </span><span>//</span><span>针对</span><span>Ipad</span><span>单独处理,否则会出错</span><span> #define isPad (UI_USER_INTERFACE_IdioM() == UIUserInterfaceIdiomPad)</span></p><p><span>    </span><span>if</span><span> (</span><span>isPad</span><span>)</span></p><p><span>    {</span></p><p><span>      </span><span>//popoverController</span><span>属性需要定义全局属性</span><span> @property(nonatomic,strong) UIPopoverController *popoverController;</span></p><p><span>      </span><span>UIPopoverController</span><span> *popover = [[</span><span>UIPopoverController</span><span> </span><span>alloc</span><span>] </span><span>initWithContentViewController</span><span>:picker];</span></p><p><span>      </span><span>self</span><span>.</span><span>popoverController</span><span> = popover;</span></p><p><span>      </span><span>//popoverController.delegate = self;</span></p><p><span>     </span></p><p><span>      [</span><span>self</span><span>.</span><span>popoverController</span><span> </span><span>presentPopoverFromrect</span><span>:</span><span>CGRectMake</span><span>(</span><span>0</span><span>,</span><span>0</span><span>,</span><span>300</span><span>,</span><span>300</span><span>) </span><span>inView</span><span>:</span><span>_viewController</span><span>.</span><span>view</span><span> </span><span>permittedArrowDirections</span><span>:</span><span>UIPopoverArrowDirectionAny</span><span> </span><span>animated</span><span>:</span><span>YES</span><span>];</span></p><p><span>     </span></p><p><span>      </span><span>//[self presentModalViewController:m_imagePicker animated:YES];</span></p><p><span>      [popover </span><span>release</span><span>];</span></p><p><span>      [picker </span><span>release</span><span>];</span></p><p><span>    }</span></p><p><span>    </span><span>else</span><span>{</span></p><p><span>      [</span><span>_viewController</span><span> </span><span>presentModalViewController</span><span>:picker </span><span>animated</span><span>:</span><span>YES</span><span>];</span></p><p><span>    }</span></p><p><span>   </span></p><p><span>  }</span><span>else</span><span> {</span></p><p><span>    </span><span>UIAlertView</span><span> *alert = [[</span><span>UIAlertView</span><span> </span><span>alloc</span><span>]</span><span>initWithTitle</span><span>:</span><span>nil</span><span> </span><span>message</span><span>:</span><span>@"Error accessing photo library!"</span></p><p><span>                           </span><span>delegate</span><span>:</span><span>nil</span><span> </span><span>cancelButtonTitle</span><span>:</span><span>@"Close"</span><span> </span><span>otherButtonTitles</span><span>:</span><span>nil</span><span>];</span></p><p><span>    [alert </span><span>show</span><span>];</span></p><p><span>    [alert </span><span>release</span><span>]; </span></p><p><span>  }</span></p>
}

-(void)openCamera
{
//    ImagePickerViewController* imagePickerViewController = [[ImagePickerViewController alloc] initWithNibName:nil bundle:nil];
//    
//    [_viewController.view addSubview:imagePickerViewController.view];
//    
//    [imagePickerViewController takePhoto];
    UIImagePickerController * picker = [[UIImagePickerController alloc] init];
    picker.delegate = _viewController;
    picker.allowsEditing = YES;
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
        
    }else{
        NSLog(@"模拟器无法打开相机");
    }
    [_viewController presentModalViewController:picker animated:YES];
    
}

iOS 18发布啦!iOS 18好吗?iOS 18值得更新吗?iOS 18beta版

iOS 18发布啦!iOS 18好吗?iOS 18值得更新吗?iOS 18beta版

ios 18 横空出世,带来了一系列激动人心的新功能。您是否好奇 ios 18 的亮点,它是否值得升级?php小编西瓜带来 ios 18 的全面解读,详细介绍了它的新特性、改进和已解决的错误。如果您正在考虑升级到 ios 18,请继续阅读以了解它的优缺点,并决定它是否适合您的设备和需求。

iOS 18 beta版终于发布啦!iOS 18此次更新是否与预期一样呢? iOS 18更新了哪些内容呢?是否真的值得果粉用户升级呢?

iOS 18发布啦!iOS 18好吗?iOS 18值得更新吗?iOS 18beta版

iOS 18的更新内容涵盖了多个方面,旨在提升用户体验和个性化设置。以下是iOS 18的更新内容概览:

  • 定制主屏幕:

    • 用户可以自由移动应用程序,按照个人喜好调整主屏幕布局。

    • 图标支持深色模式,用户可以为图标着色,打造独特的外观。

    • 应用程序可以随意放置,深色模式APP有更深度的适配,且有色系可选,整体可调节成一种色系。

  • 优化控制中心:

    • 控制中心进行了重新设计,新增了多款快捷组件,用户可以根据需要选择和排列。

    • 控件页面支持多页布局,用户可滑动访问控制中心的其它页面。

    • 控制中心界面设计已扩展为多页布局,允许用户将不常访问的功能移动到次级页面。

  • 隐私与安全:

    • iOS 18支持给APP上锁,支持面容识别,同时也能隐藏APP,以加强用户的隐私权限。

    • 用户可以专门控制第三方App可以访问哪些通讯录,进一步保障数据安全。

  • 信息应用更新:

    • 发送的字体样式和表情有更多自定义选项。

    • 支持稍后发送功能。

    • 在无网情况下,iPhone 14及后续机型支持卫星直发。

  • 其他内置应用更新:

    • 邮箱应用进行了更新,分类和摘要功能提高了效率。

    • 钱包应用支持两个手机一碰即可相互转账。

    • 地图应用带来了新的地形图。

    • 相册应用引入了智能功能,查找照片和照片分类更加精准。

    附上iOS 18升级方法:

    ※1、刷机前请做好重要数据资料的备份,或勾选“保留用户资料刷机”,防止重要资料丢失;


    ※2、请确保移动设备未开启激活锁,或者知道 ID 锁帐号、密码,否则刷机后可能会无法激活设备;


    ※3、设备升级到 iOS 18后,将无法再降级到“苹果已关闭验证”的固件版本,即使之前使用备份了 SHSH 也不能降级。

    打开最新版电脑端,用数据线把手机设备连接到电脑。点击上方“智能刷机”进入到“一键刷机”界面,连接成功会自动匹配iOS 18固件,选择“保留用户资料刷机”立即刷机。

    iOS 18发布啦!iOS 18好吗?iOS 18值得更新吗?iOS 18beta版

    以上就是iOS 18发布啦!iOS 18好吗?iOS 18值得更新吗?iOS 18beta版的详细内容,更多请关注php中文网其它相关文章!

    iOS swift sonarQube 命令 ./run-sonar-swift.sh -v 抛出错误

    iOS swift sonarQube 命令 ./run-sonar-swift.sh -v 抛出错误

    如何解决iOS swift sonarQube 命令 ./run-sonar-swift.sh -v 抛出错误

    嗨,当我为 iOS SonarQube 运行以下命令时,出现以下错误

    命令:./run-sonar-swift.sh -v

    错误:

    1. Executed 2 tests,with 0 failures (0 unexpected) in 0.333 (0.335) seconds
    2. ..
    3. Executed 2 tests,with 0 failures (0 unexpected) in 24.284 (24.289) seconds
    4. \\nComputing coverage report\\n
    5. Command line exclusion flags for slather is:
    6. slather coverage --binary-basename SonarDemoApp --input-format profdata --cobertura-xml --output-directory sonar-reports --workspace SonarDemoApp.xcworkspace --scheme SonarDemoApp SonarDemoApp.xcodeproj
    7. + slather coverage --binary-basename SonarDemoApp --input-format profdata --cobertura-xml --output-directory sonar-reports --workspace SonarDemoApp.xcworkspace --scheme SonarDemoApp SonarDemoApp.xcodeproj
    8. Slathering...
    9. <internal:/usr/local/Cellar/ruby/3.0.1/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'': cannot load such file -- rexml/document (LoadError)
    10. from <internal:/usr/local/Cellar/ruby/3.0.1/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require''
    11. from /usr/local/Cellar/gem-slather/2.7.0/gems/xcodeproj-1.19.0/lib/xcodeproj/scheme.rb:1:in `<top (required)>''
    12. from <internal:/usr/local/Cellar/ruby/3.0.1/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require''
    13. from <internal:/usr/local/Cellar/ruby/3.0.1/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require''
    14. from /usr/local/Cellar/gem-slather/2.7.0/gems/slather-2.7.0/lib/slather/project.rb:481:in `find_binary_files''
    15. from /usr/local/Cellar/gem-slather/2.7.0/gems/slather-2.7.0/lib/slather/project.rb:451:in `configure_binary_file''
    16. from /usr/local/Cellar/gem-slather/2.7.0/gems/slather-2.7.0/lib/slather/project.rb:331:in `configure''
    17. from /usr/local/Cellar/gem-slather/2.7.0/gems/slather-2.7.0/lib/slather/command/coverage_command.rb:59:in `execute''
    18. from /usr/local/Cellar/gem-slather/2.7.0/gems/clamp-1.3.2/lib/clamp/command.rb:66:in `run''
    19. from /usr/local/Cellar/gem-slather/2.7.0/gems/clamp-1.3.2/lib/clamp/subcommand/execution.rb:18:in `execute''
    20. from /usr/local/Cellar/gem-slather/2.7.0/gems/clamp-1.3.2/lib/clamp/command.rb:66:in `run''
    21. from /usr/local/Cellar/gem-slather/2.7.0/gems/clamp-1.3.2/lib/clamp/command.rb:140:in `run''
    22. from /usr/local/Cellar/gem-slather/2.7.0/gems/slather-2.7.0/bin/slather:17:in `<top (required)>''
    23. from /usr/local/bin/slather:6:in `load''
    24. from /usr/local/bin/slather:6:in `<main>''
    25. + returnValue=1
    26. + set +x
    27. ERROR - Command ''slather coverage --binary-basename SonarDemoApp --input-format profdata --cobertura-xml --output-directory sonar-reports --workspace SonarDemoApp.xcworkspace --scheme SonarDemoApp SonarDemoApp.xcodeproj'' Failed with error code: 1

    我已经安装了 xcode 命令行工具、slather 等等。但不知道为什么会出现这个错误

    另外,之前我收到命令未找到 slather,然后我尝试安装“gem install slather”但它不起作用。

    所以我按照以下命令重新安装 ruby​​ 并尝试安装 slather,然后全部安装完毕。

    1. /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    2. brew install ruby
    3. echo ''export PATH="/usr/local/opt/ruby/bin:$PATH"'' >> ~/.bash_profile
    4. source ~/.bash_profile

    正在寻找有关上述错误的帮助。

    ios – Swift 3发布后,Swift 2应用程序是否可以运行?

    ios – Swift 3发布后,Swift 2应用程序是否可以运行?

    我发布了几个用 Swift 2.0和2.1编写的应用程序.现在Apple刚开源Swift并宣布Swift 3.0将于明年发布.在Swift 3.0发布后,我的应用程序仍然有用吗?

    解决方法

    我想你在这里问两个不同的问题.

    >当Swift 3推出时,您的应用程序是否会在新操作系统上执行?
    >推出时,您的应用会在新操作系统上运行吗?

    关于第一个问题,是的,你的应用程序将执行,即使它是针对Swift 2编译的.Swift应用程序在其捆绑包中嵌入了Swift运行时库,因此您在这方面是安全的.您会注意到Swift捆绑包总是比Objective-C对应物大4-5 MB,这正是原因所在.

    关于第二个问题,与任何新的操作系统版本一样,无法保证您的应用程序能够像以前版本的操作系统那样工作.虽然根据我的经验,Apple在过去的几个OS版本中做了相当不错的工作,尽管你的里程可能会有所不同.

    今天关于iOS 选取用户相册中的图片 UIImagePickerController Swiftios选取照片的介绍到此结束,谢谢您的阅读,有关cocos2d-x横版项目调用 ios UIImagePickerController、iOS 18发布啦!iOS 18好吗?iOS 18值得更新吗?iOS 18beta版、iOS swift sonarQube 命令 ./run-sonar-swift.sh -v 抛出错误、ios – Swift 3发布后,Swift 2应用程序是否可以运行?等更多相关知识的信息可以在本站进行查询。

    本文标签: