XCODE:如何在更改后保存按钮图像?

时间:2011-06-22 01:03:43

标签: xcode4

已更新----

好的,所以我找到了一种方法来做到这一点....可能不是正确的方法,但我是xcode的新手,这种方式似乎对我有用。也许有人可以改进这个想法。

最初的问题是如何在更改后保存按钮图像?好吧,好吧这里....我有一个自定义按钮设置图像,所以我做的第一件事是使用这个代码更改该按钮的图像:(顺便说一下它设置,以便您单击一个按钮更改自定义按钮的图像)

.h file

@interface viewcontroller{

IBOutlet UIButton *btnSetImage1;

}

@property (nonatomic, retain) IBOutlet UIButton *btnSetImage1;

然后是代码:

.m file

@synthesize btnSetImage1;

//Inside a button's action

UIImage *btnImage1 = [UIImage imageNamed:@"button_green.png"];
        [btnSetImage1 setImage:btnImage1 forState:UIControlStateNormal]; 

-----------------------这里的问题得到了回答------------------ ------------

好的,现在我在自定义按钮上更改了图像,我通过添加以下内容保存了它:

    .h file

@interface viewcontroller{

IBOutlet UIButton *btnSetImage1;
IBOutlet UIImageView *buttonImgChange1;

}

@property (nonatomic, retain) IBOutlet UIButton *btnSetImage1;
@property (nonatomic, retain) IBOutlet UIImageView *buttonImgChange1;

然后是代码:

.m file

@synthesize btnSetImage1;
@synthesize buttonImgChange1;

//Inside a button's action

UIImage *btnImage1 = [UIImage imageNamed:@"button_green.png"];
        [btnSetImage1 setImage:btnImage1 forState:UIControlStateNormal]; 

//Set image to variable  

buttonImgChange1 = [[UIImageView alloc] initWithImage:btnImage1];

        //SAVE CHANGES

        // Create instances of NSData
        UIImage *savedButtonImage1 = buttonImgChange1.image;
        NSData *buttonData1 = UIImagePNGRepresentation(savedButtonImage1);    
        // Store the data
        NSUserDefaults *buttondefaults1 = [NSUserDefaults standardUserDefaults];
        [buttondefaults1 setObject:buttonData1 forKey:@"buttonImage1"];

        [buttondefaults1 synchronize];

通过这种方式,我可以将按钮图像保存为名为“buttonImage1”的按键。然后我在viewdidload中调用了这个键:

//-----------UPDATE BUTTONS---------------


// Get the stored data before the view loads
NSUserDefaults *buttondefaults1 = [NSUserDefaults standardUserDefaults];

NSData *buttonData1 = [buttondefaults1 dataForKey:@"buttonImage1"];
UIImage *savedButtonImage1 = [UIImage imageWithData:buttonData1];


// Update the UI elements with the saved data
buttonImgChange1.image = savedButtonImage1;


//Update buttons
UIImage *btnImage1 = savedButtonImage1;
[btnSetImage1 setImage:btnImage1 forState:UIControlStateNormal];

buttonImgChange1 = [[UIImageView alloc] initWithImage:btnImage1];

就像我说的那样......我是xcode的新手并且全神贯注地寻找这个问题的解决方案。在自己摸索之后,我想出了这个解决方案。它可能不是最好或最有效的,我不知道,但它对我有用,我希望它能帮助其他人。

哦,只是一个注释,如果你想要两个不同的图像,一个在按钮正常状态下显示,然后在单击按钮时显示另一个图像,只需复制所有代码并重命名所有变量,即forKey名称,最后将forState更改为 - forState:UIControlStateHighlighted。并且你有它,按下按钮更改并保存自定义按钮的图像。

谢谢!

0 个答案:

没有答案