Just My Life & My Work

有時候一張影像,我們想要複製來使用,那麼可以如何做?

[iOS] 拷貝影像 (Copy Image)3

我想拷貝上圖下方的黑色漸層影像

有人如我直覺使用Copy功能,可是會crash,因為:

UIImageView doesn’t conform to NSCopying, but it does conform to NSCoding. Archive your view, and then de-archive it to get a brand new copy.

/**
 Theme: Copy ImageView
 IDE: Xcode 9
 Language: Objective C
 Date: 107/07/12
 Author: HappyMan
 Blog: https://cg2010studio.com/
 */

    UIImageView *imageView = [[UIImageView alloc] initWithImage:darkImage];
    imageView.frame = CGRectMake(0, 0, sleepStateInfoView.frame.size.width, sleepStateInfoView.frame.size.height);
    [sleepStateInfoView addSubview:imageView];
    [sleepStateInfoView sendSubviewToBack:imageView];

    NSData *imageViewData = [NSKeyedArchiver archivedDataWithRootObject:imageView];
    UIImageView *copyImageView = [NSKeyedUnarchiver unarchiveObjectWithData:imageViewData];
    [lifeStyleInfoView addSubview:copyImageView];
    [lifeStyleInfoView sendSubviewToBack:copyImageView];

    imageViewData = [NSKeyedArchiver archivedDataWithRootObject:imageView];
    copyImageView = [NSKeyedUnarchiver unarchiveObjectWithData:imageViewData];
    [respirationRateInfoView addSubview:copyImageView];
    [respirationRateInfoView sendSubviewToBack:copyImageView];

    imageViewData = [NSKeyedArchiver archivedDataWithRootObject:imageView];
    copyImageView = [NSKeyedUnarchiver unarchiveObjectWithData:imageViewData];
    [sdnnInfoView addSubview:copyImageView];
    [sdnnInfoView sendSubviewToBack:copyImageView];

於是乎,我們輕鬆愉快複製和貼上:)

參考:How do you create a copy of an UIImageView instance?

隨意留個言吧:)~

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

標籤雲