UIImageView - Как получить имя файла назначенного изображения? - PullRequest
76 голосов
/ 16 ноября 2009

Можно ли прочитать имя UIImageView's UIImage это в настоящее время хранится в UIImageView?

Я надеялся, что вы могли бы сделать что-то вроде этого, но не понял этого.

NSString *currentImageName = [MyIImageView getFileName];

Ответы [ 16 ]

2 голосов
/ 20 декабря 2013

Вы можете использовать целевую функцию c Runtime для связывания изображения с UImageView.

Первый импорт #import <objc/runtime.h> в вашем классе

, затем реализуйте свой код, как показано ниже:

NSString *filename = @"exampleImage";
UIImage *image = [UIImage imagedName:filename];
objc_setAssociatedObject(image, "imageFilename", filename, OBJC_ASSOCIATION_COPY);
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
//You can then get the image later:
NSString *filename = objc_getAssociatedObject(imageView, "imageFilename");

Надеюсь, это поможет вам.

1 голос
/ 25 февраля 2019

Получить имя изображения Swift 4.2

Есть способ, если вы хотите сравнить имена изображений кнопок, которые есть в активах.

@IBOutlet weak var extraShotCheckbox: UIButton!

@IBAction func extraShotCheckBoxAction(_ sender: Any) {
    extraShotCheckbox.setImage(changeCheckBoxImage(button: extraShotCheckbox), for: .normal)
}

func changeCheckBoxImage(button: UIButton) -> UIImage {
    if let imageView = button.imageView, let image = imageView.image {
        if image == UIImage(named: "checkboxGrayOn") {
            return UIImage(named: "checkbox")!
        } else {
            return UIImage(named: "checkboxGrayOn")!
        }
    }
    return UIImage()
}
1 голос
/ 13 апреля 2017

Swift 3

Сначала установите accessibilityIdentifier как imageName

myImageView.image?.accessibilityIdentifier = "add-image"

Тогда используйте следующий код.

extension UIImageView
{
func getFileName() -> String? {
    // First set accessibilityIdentifier of image before calling.
    let imgName = self.image?.accessibilityIdentifier
    return imgName
}
}

Наконец, вызывающий способ определения

myImageView.getFileName()
0 голосов
/ 27 ноября 2017

Код работает в swift3 - написать код внутри метода делегата didFinishPickingMediaWithInfo:

if let referenceUrl = info[UIImagePickerControllerReferenceURL] as? 

NSURL {

  ALAssetsLibrary().asset(for: referenceUrl as URL!, resultBlock: { asset in

    let fileName = asset?.defaultRepresentation().filename()
    print(fileName!)

    //do whatever with your file name            
    }, failureBlock: nil)
}
0 голосов
/ 05 декабря 2013

используйте ниже

 UIImageView *imageView = ((UIImageView *)(barButtonItem.customView.subviews.lastObject));
 file_name = imageView.accessibilityLabel;
0 голосов
/ 02 июня 2013

Я справился с этой проблемой, я решил ее с помощью шаблона проектирования MVC, создал класс Card:

@interface Card : NSObject

@property (strong,nonatomic) UIImage* img;

@property  (strong,nonatomic) NSString* url;

@end

// затем в UIViewController в методе DidLoad:

// init Cards
Card* card10= [[Card alloc]init];
card10.url=@"image.jpg";  
card10.img = [UIImage imageNamed:[card10 url]];

// для примера

UIImageView * myImageView = [[UIImageView alloc]initWithImage:card10.img];
[self.view addSubview:myImageView];

// возможно, вы захотите проверить имя изображения, чтобы вы могли сделать это:

// например

 NSString * str = @"image.jpg";

 if([str isEqualToString: [card10 url]]){
 // your code here
 }
...