- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我拥有的一个应用程序的简化版本,它从 iPhone/iPad 图像库获取图像 url,将该 URL 的字符串存储在核心数据中,然后在另一个 Controller 中显示它。我认为正确的 URl 存储在核心数据中,但在以后检索时不显示。
为了尝试排除故障,我有一个应用程序可以从 iPhone/iPad 图片库获取图片并将其显示在屏幕上。然后我按下一个按钮以转到第二个 View Controller 并再次显示它。它不会出现在第二个 View Controller 上。我在第一个场景中使用与在第二个 Controller 中使用的方法相同的方法来显示它,只是为了表明该方法可以提供正确的 URL。我将 URL 作为字符串在 Controller 之间传递以模拟存储在核心数据中的 URL,因此将它作为 NSURL 传递不是此示例的选项。
首先查看controller.h和.m文件
//
// patViewController.h
// pictureAssetTest
//
// Created by Chip Cox on 8/10/14.
// Copyright (c) 2014 Home. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "CCExtras.h"
#import <AssetsLibrary/AssetsLibrary.h>
@interface patViewController : UIViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate>
@end
//
// patViewController.m
// pictureAssetTest
//
// Created by Chip Cox on 8/10/14.
// Copyright (c) 2014 Home. All rights reserved.
//
#import "patViewController.h"
#import "patSecondVC.h"
@interface patViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageControl;
@property (nonatomic,strong) NSURL *imageURL;
@end
@implementation patViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)selectPictureFromLibrary:(UIButton *)sender
{
[self startPhotoLibraryFromViewController:self usingDelegate:self];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[self dismissViewControllerAnimated:YES completion:nil];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[self dismissViewControllerAnimated:YES completion:nil];
self.imageURL=[info objectForKey:UIImagePickerControllerReferenceURL];
CCLog(@"Image =%@",[info objectForKey:UIImagePickerControllerReferenceURL]);
[self displayImageFromURL:self.imageURL];
}
- (void) displayImageFromURL:(NSURL*)urlIn
{
ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus];
switch(status){
case ALAuthorizationStatusDenied: {
CCLog(@"not authorized");
break;
}
case ALAuthorizationStatusRestricted: {
CCLog(@"Restricted");
break;
}
case ALAuthorizationStatusNotDetermined: {
CCLog(@"Undetermined");
break;
}
case ALAuthorizationStatusAuthorized: {
CCLog(@"Authorized");
CCLog(@"urlIn=%@",urlIn.pathComponents);
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
__block UIImage *returnValue = nil;
[library assetForURL:urlIn resultBlock:^(ALAsset *asset) {
returnValue = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]];
dispatch_async(dispatch_get_main_queue(), ^{
[self.imageControl setImage:returnValue];
[self.imageControl setNeedsDisplay];
});
} failureBlock:^(NSError *error) {
NSLog(@"error : %@", error);
}];
break;
}
default: {
CCLog(@"Unknown hit default");
break;
}
}
}
- (BOOL) startPhotoLibraryFromViewController: (UIViewController*) controller
usingDelegate: (id <UIImagePickerControllerDelegate,
UINavigationControllerDelegate>) delegate {
UIImagePickerController *cameraUI = [[UIImagePickerController alloc] init];
cameraUI.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
// Displays a control that allows the user to choose picture or
// movie capture, if both are available:
cameraUI.mediaTypes =
[UIImagePickerController availableMediaTypesForSourceType:
UIImagePickerControllerSourceTypePhotoLibrary];
// Hides the controls for moving & scaling pictures, or for
// trimming movies. To instead show the controls, use YES.
cameraUI.allowsEditing = NO;
cameraUI.delegate = delegate;
[controller presentViewController:cameraUI animated:YES completion:nil];
return YES;
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.destinationViewController isKindOfClass:[patSecondVC class]]) {
CCLog(@"Preparing for segue to %@",segue.destinationViewController);
patSecondVC *dvc=segue.destinationViewController;
dvc.transferURL=self.imageURL.absoluteString;
} else {
CCLog(@"Preparing to segue to unknown destination view controller %@",segue.destinationViewController);
}
}
@end
下面的代码是第二个view controller的.h和.m文件。
//
// patSecondVC.h
// pictureAssetTest
//
// Created by Chip Cox on 8/10/14.
// Copyright (c) 2014 Home. All rights reserved.
//
#import <UIKit/UIKit.h>
#import <AssetsLibrary/AssetsLibrary.h>
#import "CCExtras.h"
@interface patSecondVC : UIViewController
@property (nonatomic,strong) NSString *transferURL;
@end
//
// patSecondVC.m
// pictureAssetTest
//
// Created by Chip Cox on 8/10/14.
// Copyright (c) 2014 Home. All rights reserved.
//
#import "patSecondVC.h"
@interface patSecondVC ()
@property (weak, nonatomic) IBOutlet UIImageView *imageControl;
@end
@implementation patSecondVC
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
CCLog(@"photo url=%@",self.transferURL);
[self displayImageFromURL:[NSURL fileURLWithPath:self.transferURL]];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void) displayImageFromURL:(NSURL*)urlIn
{
ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus];
switch(status){
case ALAuthorizationStatusDenied: {
CCLog(@"not authorized");
break;
}
case ALAuthorizationStatusRestricted: {
CCLog(@"Restricted");
break;
}
case ALAuthorizationStatusNotDetermined: {
CCLog(@"Undetermined");
break;
}
case ALAuthorizationStatusAuthorized: {
CCLog(@"Authorized");
CCLog(@"urlIn=%@",urlIn.pathComponents);
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
__block UIImage *returnValue = nil;
[library assetForURL:urlIn resultBlock:^(ALAsset *asset) {
returnValue = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]];
dispatch_async(dispatch_get_main_queue(), ^{
[self.imageControl setImage:returnValue];
[self.imageControl setNeedsDisplay];
});
} failureBlock:^(NSError *error) {
NSLog(@"error : %@", error);
}];
break;
}
default: {
CCLog(@"Unknown hit default");
break;
}
}
}
@end
谢谢
添加了日志输出
2014-08-11 17:05:37.194 pictureAssetTest[2544:60b] <-[patViewController imagePickerController:didFinishPickingMediaWithInfo:] - 45> Image =assets-library://asset/asset.PNG?id=5E208B2D-65CC-4F46-8F22-DD2E8006AF1B&ext=PNG
2014-08-11 17:05:37.195 pictureAssetTest[2544:60b] <-[patViewController displayImageFromURL:] - 68> Authorized
2014-08-11 17:05:37.196 pictureAssetTest[2544:60b] <-[patViewController displayImageFromURL:] - 69> urlIn=(
"/",
"asset.PNG"
)
2014-08-11 17:05:39.149 pictureAssetTest[2544:60b] <-[patViewController prepareForSegue:sender:] - 116> Preparing for segue to <patSecondVC: 0xa49c610>
2014-08-11 17:05:39.150 pictureAssetTest[2544:60b] <-[patSecondVC viewDidLoad] - 31> photo url=assets-library://asset/asset.PNG?id=5E208B2D-65CC-4F46-8F22-DD2E8006AF1B&ext=PNG
2014-08-11 17:05:39.151 pictureAssetTest[2544:60b] <-[patSecondVC displayImageFromURL:] - 59> Authorized
2014-08-11 17:05:39.151 pictureAssetTest[2544:60b] <-[patSecondVC displayImageFromURL:] - 60> urlIn=(
"/",
"assets-library:",
asset,
"asset.PNG?id=5E208B2D-65CC-4F46-8F22-DD2E8006AF1B&ext=PNG"
)
最佳答案
在第二个 vc 中将调用更改为
[self displayImageFromURL:[NSURL URLWithString:self.transferURL]];
这应该可以解决问题!
关于ios - asset imageURL 作为字符串传递给另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25234968/
我在我的应用程序中使用rails 4 和 ruby 1.9.3 以及fancybox2-rails gem,但是 Assets 管道存在一个普遍问题。如果我运行 rake task 进行预编译,那
我把我所有的 Assets 都放在我的包里例如myBundle/Resources/public/css/ 然后像这样加载它们: {% block stylesheets %} {{ parent()
我正在创建RoR-6应用程序,并从此行的application.html.erb文件中引发以下错误: javascript_include_tag 'application', 'data-turbo
我正在对 Play Subproject 功能进行更多扩展测试,如下所述:http://www.playframework.com/documentation/2.0/SBTSubProjects .
我是 symfony 2 和 Assetic 的新手。我想在 CSS 中使用 assetic 和 Sass。我使用自定义字体。我在资源下的包中创建文件夹“assets/css”,里面有 _base.s
这是我的目录结构(这只是一个测试项目): stan@mypc:/generate_assets$ sudo tree -L 3 -p . ├── [drwxr-xr-x] assets │ └─
我使用 node.js connect/express。 有人知道支持 TypeScript 源代码即时编译和缩小的 Assets 管理器吗? 知道如何以编程方式调用编译器吗? 我一直在使用 conn
因此,我们在 Assets 管道摘要方面遇到了一个小问题,因为我们有许多 HTML 模板作为 Assets (对于 AngularJS),并且我们使用 asset_path 在 Javascript
我想从iPad的照片库中获取图像URL。 当我尝试从Image Piicker的信息中获取 UIImagePickerControllerReferenceURL 时 我将URL设为: assets
我正在使用带有Assetic的Symfony 2.1.10版,并且在上次 Composer 更新之后,当我尝试运行php app/console assetic:dump时出现以下错误 Dumping
我的 Assets 管道有问题,我已经有一个名为 Assets 的资源/ Controller 。所以我已将 assets.prefix 选项更改为“/externals”。 config.asset
更新到 Expo sdk 34 后,出现此错误:TypeError:Asset.fromModule 不是函数。 (在“Asset.fromModule(image)”中,“Asset.fromMod
将 Play 框架项目从 2.2.4 迁移到 2.3.8 后遇到问题: 这是运行命令“activatorcompile”的错误输出: [error] ...\workspace\testproject
我在将 Google Analytics 添加到我的 Rails 4 应用程序时遇到了一些困难(参见 this post)。 我通过在 /public/assets/google-analytics.
我正在使用 Symfony2 和 Assetic。最近我一直在做很多 CSS 工作,所以在某个时候我需要命令 $ php app/console assetic:dump --env=prod --n
我正在 Android 开发中迈出第一步,并遇到了 Assets 一词。 据我了解, Assets 只是一个未被解析或引用为资源的文件。 这个词有更准确的定义吗?我应该在哪些情况下在我的应用程序中使用
我添加了 danial-farid--angular-file-upload通过 Rails Assets 将库添加到我的 Rails 4 应用程序。主库加载正常,但 sprockets 找不到它包含
这是我的代码,尽管编码非常粗糙: public void loadStack(AssetManager manager, String path) { String[] lis
我正在使用 Assets 管理我的 Symfony 2 框架中的 CSS 文件。它在生产模式下运行良好。 我的问题是在 Debug模式下,assetic 不断将我的文件合并为一个输出文件。这使得跟踪特
我想以编程方式从重复的相册中删除 Assets (照片不是)。我可以使用照片框架删除相册 我想知道如何从相册中删除 Assets 而不从照片应用中完全删除它。我想在多个地方使用它,例如将 Assets
我是一名优秀的程序员,十分优秀!