更改 UIImageView 图像并使用 NSUserDefaults 保存它
Changing UIImageView image and save it using NSUserDefaults
我一直在开发一个允许用户通过触摸按钮切换 UIImageView 图像的应用程序。更具体地说,我保存了两张图像,当您按下按钮时,UIImageView 图像会发生变化。对于那件事我没有任何疑问。问题是当我关闭应用程序时,图像重置为我最初设置为初始 UIImageView 图像的图像。
我想知道,有没有办法保留上次选择的图像?换句话说:
- 应用程序启动时,图像设置为 image1。
- 用户按下按钮,图像变为 image2
- 用户关闭应用程序并重新打开它,image2 仍然是背景,除非用户再次点击按钮
这是我目前的代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var backgroundImage: UIImageView!
let lightBG = UIImage(named: "bg1.jpg")
let darkBG = UIImage(named: "bg2.jpg")
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func changeBG(sender: AnyObject) {
if(backgroundImage.image == lightBG){
backgroundImage.image = darkBG
}
else{
backgroundImage.image = lightBG
}
}
}
@IBAction func changeBG(sender: AnyObject) {
if(backgroundImage.image == lightBG){
backgroundImage.image = darkBG
NSUserDefaults.standardUserDefaults().setObject("bg2.jpg", forKey: "BACKGROUND_IMAGE_NAME")
}
else{
backgroundImage.image = lightBG
NSUserDefaults.standardUserDefaults().setObject("bg1.jpg", forKey: "BACKGROUND_IMAGE_NAME")
}
NSUserDefaults.standardUserDefaults().synchronize()
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
var imageName: String = NSUserDefaults.standardUserDefaults().objectForKey("BACKGROUND_IMAGE_NAME")
if imageName.characters.count != 0 {
let imgBackGround = UIImage(named: imageName)
backgroundImage.image = imgBackGround
}
}
更好的选择是在 NSUserDefaults
中保存 Boolean
而不是整个图像。
@IBAction func changeBG(sender: AnyObject) {
if(backgroundImage.image == lightBG){
backgroundImage.image = darkBG
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "IMAGE_DARK_SET")
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "IMAGE_LIGHT_SET")
}
else{
backgroundImage.image = lightBG
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "IMAGE_LIGHT_SET")
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "IMAGE_DARK_SET")
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
if NSUserDefaults.standardUserDefaults().boolForKey("IMAGE_LIGHT_SET"){
backgroundImage.image = lightBG
}else if NSUserDefaults.standardUserDefaults().boolForKey("IMAGE_DARK_SET"){
backgroundImage.image = darkBG
}
}
希望对您有所帮助!
第一步
override func viewDidLoad() {
super.viewDidLoad()
// Initially Check your `NSUserDefaults` key is empty or not
if NSUserDefaults.standardUserDefaults().objectForKey("SaveImage") != nil
{
// If it is not empty , load the `NSUserDefaults` Image
backgroundImage.image = UIImage(named: NSUserDefaults.standardUserDefaults().objectForKey("SaveImage"))
}
else
{
// if above condition is not statisfy load the normal Image
backgroundImage.image = lightBG
}
}
@IBAction func changeBG(sender: AnyObject) {
if(backgroundImage.image == lightBG){
backgroundImage.image = darkBG
}
else{
backgroundImage.image = lightBG
}
// On your button click , load the last selected Image , thats all
NSUserDefaults.standardUserDefaults().setObject(backgroundImage.image, forKey: "SaveImage")
}
您可以通过多种方式保存所选图像。一种是在退出视图或用户更改图像时将图像的名称保存在用户默认值中。
用户更改图片时如何保存:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var backgroundImage: UIImageView!
let kBGImageNameKey = "bgImageName"
let lightBG = UIImage(named: "bg1.jpg")
let darkBG = UIImage(named: "bg2.jpg")
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let defaults = NSUserDefaults.standardUserDefaults()
if let name = defaults.stringForKey(kBGImageNameKey) {
if (name == "bg1.jpg") {
backgroundImage.image = lightBG
} else {
backgroundImage.image = darkBG
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func changeBG(sender: AnyObject) {
let defaults = NSUserDefaults.standardUserDefaults()
if(backgroundImage.image == lightBG){
backgroundImage.image = darkBG
defaults.setObject("bg2.jpg", forKey: kBGImageNameKey)
}
else{
backgroundImage.image = lightBG
defaults.setObject("bg1.jpg", forKey: kBGImageNameKey)
}
}
}
这只是为您指明方向的一种方法。
我一直在开发一个允许用户通过触摸按钮切换 UIImageView 图像的应用程序。更具体地说,我保存了两张图像,当您按下按钮时,UIImageView 图像会发生变化。对于那件事我没有任何疑问。问题是当我关闭应用程序时,图像重置为我最初设置为初始 UIImageView 图像的图像。
我想知道,有没有办法保留上次选择的图像?换句话说:
- 应用程序启动时,图像设置为 image1。
- 用户按下按钮,图像变为 image2
- 用户关闭应用程序并重新打开它,image2 仍然是背景,除非用户再次点击按钮
这是我目前的代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var backgroundImage: UIImageView!
let lightBG = UIImage(named: "bg1.jpg")
let darkBG = UIImage(named: "bg2.jpg")
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func changeBG(sender: AnyObject) {
if(backgroundImage.image == lightBG){
backgroundImage.image = darkBG
}
else{
backgroundImage.image = lightBG
}
}
}
@IBAction func changeBG(sender: AnyObject) {
if(backgroundImage.image == lightBG){
backgroundImage.image = darkBG
NSUserDefaults.standardUserDefaults().setObject("bg2.jpg", forKey: "BACKGROUND_IMAGE_NAME")
}
else{
backgroundImage.image = lightBG
NSUserDefaults.standardUserDefaults().setObject("bg1.jpg", forKey: "BACKGROUND_IMAGE_NAME")
}
NSUserDefaults.standardUserDefaults().synchronize()
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
var imageName: String = NSUserDefaults.standardUserDefaults().objectForKey("BACKGROUND_IMAGE_NAME")
if imageName.characters.count != 0 {
let imgBackGround = UIImage(named: imageName)
backgroundImage.image = imgBackGround
}
}
更好的选择是在 NSUserDefaults
中保存 Boolean
而不是整个图像。
@IBAction func changeBG(sender: AnyObject) {
if(backgroundImage.image == lightBG){
backgroundImage.image = darkBG
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "IMAGE_DARK_SET")
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "IMAGE_LIGHT_SET")
}
else{
backgroundImage.image = lightBG
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "IMAGE_LIGHT_SET")
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "IMAGE_DARK_SET")
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
if NSUserDefaults.standardUserDefaults().boolForKey("IMAGE_LIGHT_SET"){
backgroundImage.image = lightBG
}else if NSUserDefaults.standardUserDefaults().boolForKey("IMAGE_DARK_SET"){
backgroundImage.image = darkBG
}
}
希望对您有所帮助!
第一步
override func viewDidLoad() {
super.viewDidLoad()
// Initially Check your `NSUserDefaults` key is empty or not
if NSUserDefaults.standardUserDefaults().objectForKey("SaveImage") != nil
{
// If it is not empty , load the `NSUserDefaults` Image
backgroundImage.image = UIImage(named: NSUserDefaults.standardUserDefaults().objectForKey("SaveImage"))
}
else
{
// if above condition is not statisfy load the normal Image
backgroundImage.image = lightBG
}
}
@IBAction func changeBG(sender: AnyObject) {
if(backgroundImage.image == lightBG){
backgroundImage.image = darkBG
}
else{
backgroundImage.image = lightBG
}
// On your button click , load the last selected Image , thats all
NSUserDefaults.standardUserDefaults().setObject(backgroundImage.image, forKey: "SaveImage")
}
您可以通过多种方式保存所选图像。一种是在退出视图或用户更改图像时将图像的名称保存在用户默认值中。
用户更改图片时如何保存:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var backgroundImage: UIImageView!
let kBGImageNameKey = "bgImageName"
let lightBG = UIImage(named: "bg1.jpg")
let darkBG = UIImage(named: "bg2.jpg")
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let defaults = NSUserDefaults.standardUserDefaults()
if let name = defaults.stringForKey(kBGImageNameKey) {
if (name == "bg1.jpg") {
backgroundImage.image = lightBG
} else {
backgroundImage.image = darkBG
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func changeBG(sender: AnyObject) {
let defaults = NSUserDefaults.standardUserDefaults()
if(backgroundImage.image == lightBG){
backgroundImage.image = darkBG
defaults.setObject("bg2.jpg", forKey: kBGImageNameKey)
}
else{
backgroundImage.image = lightBG
defaults.setObject("bg1.jpg", forKey: kBGImageNameKey)
}
}
}
这只是为您指明方向的一种方法。