From ff3faddec52d06904dd65630977a7703714b9f50 Mon Sep 17 00:00:00 2001 From: Areejalharbi57 Date: Thu, 23 Dec 2021 08:44:57 +0300 Subject: [PATCH] ADD Jason image project --- .DS_Store | Bin 0 -> 6148 bytes gitJasonImage/.DS_Store | Bin 0 -> 6148 bytes .../gitJasonImage.xcodeproj/project.pbxproj | 371 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 28495 bytes .../xcschemes/xcschememanagement.plist | 14 + gitJasonImage/gitJasonImage/AppDelegate.swift | 36 ++ .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 98 +++++ .../Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 25 ++ .../gitJasonImage/Base.lproj/Main.storyboard | 68 ++++ gitJasonImage/gitJasonImage/GetImage.swift | 22 ++ .../gitJasonImage/ImageViewCell.swift | 30 ++ gitJasonImage/gitJasonImage/Info.plist | 25 ++ .../gitJasonImage/SceneDelegate.swift | 52 +++ .../gitJasonImage/ViewController.swift | 94 +++++ 18 files changed, 867 insertions(+) create mode 100644 .DS_Store create mode 100644 gitJasonImage/.DS_Store create mode 100644 gitJasonImage/gitJasonImage.xcodeproj/project.pbxproj create mode 100644 gitJasonImage/gitJasonImage.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 gitJasonImage/gitJasonImage.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 gitJasonImage/gitJasonImage.xcodeproj/project.xcworkspace/xcuserdata/areej.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 gitJasonImage/gitJasonImage.xcodeproj/xcuserdata/areej.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 gitJasonImage/gitJasonImage/AppDelegate.swift create mode 100644 gitJasonImage/gitJasonImage/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 gitJasonImage/gitJasonImage/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 gitJasonImage/gitJasonImage/Assets.xcassets/Contents.json create mode 100644 gitJasonImage/gitJasonImage/Base.lproj/LaunchScreen.storyboard create mode 100644 gitJasonImage/gitJasonImage/Base.lproj/Main.storyboard create mode 100644 gitJasonImage/gitJasonImage/GetImage.swift create mode 100644 gitJasonImage/gitJasonImage/ImageViewCell.swift create mode 100644 gitJasonImage/gitJasonImage/Info.plist create mode 100644 gitJasonImage/gitJasonImage/SceneDelegate.swift create mode 100644 gitJasonImage/gitJasonImage/ViewController.swift diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f34168c9b6f0eb2817ff5e3fb05eadb0c8ef6e09 GIT binary patch literal 6148 zcmeHKyG{c^3>-s>NC+t<<^BSHu!=$fEk8gY2q6Wo2=rI+U3?njhmcMe3JMxDmh9Q} zd2Y2+oX-Gk{l2>dRsfcCM|^mgn?HA-*-2%LNas7YIAFjluJJOfKAv#yIiB#0H{4A4 zTV@}3hllQ3^-_De$d;e;*p%u@{bs@#$cQ z5rDX0I*jX>C5X)v#9lZiGDEYZ5|e5*Vp!6dZ&lX|$Hb(=YWT1^*=j-s>NC+t<<^BSHu!=$fEk8gY2q6Wo2=rI+U3?njhmcMe3JMxDmh9Q} zd2Y2+oX-Gk{l2>dRsfcCM|^mgn?HA-*-2%LNas7YIAFjluJJOfKAv#yIiB#0H{4A4 zTV@}3hllQ3^-_De$d;e;*p%u@{bs@#$cQ z5rDX0I*jX>C5X)v#9lZiGDEYZ5|e5*Vp!6dZ&lX|$Hb(=YWT1^*=j + + + + diff --git a/gitJasonImage/gitJasonImage.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/gitJasonImage/gitJasonImage.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/gitJasonImage/gitJasonImage.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/gitJasonImage/gitJasonImage.xcodeproj/project.xcworkspace/xcuserdata/areej.xcuserdatad/UserInterfaceState.xcuserstate b/gitJasonImage/gitJasonImage.xcodeproj/project.xcworkspace/xcuserdata/areej.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..0fdca29f864da5cf83483db949cd0a4e3b3bc2d0 GIT binary patch literal 28495 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 literal 0 HcmV?d00001 diff --git a/gitJasonImage/gitJasonImage.xcodeproj/xcuserdata/areej.xcuserdatad/xcschemes/xcschememanagement.plist b/gitJasonImage/gitJasonImage.xcodeproj/xcuserdata/areej.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..06ef7ea --- /dev/null +++ b/gitJasonImage/gitJasonImage.xcodeproj/xcuserdata/areej.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + gitJasonImage.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/gitJasonImage/gitJasonImage/AppDelegate.swift b/gitJasonImage/gitJasonImage/AppDelegate.swift new file mode 100644 index 0000000..5dcd77e --- /dev/null +++ b/gitJasonImage/gitJasonImage/AppDelegate.swift @@ -0,0 +1,36 @@ +// +// AppDelegate.swift +// gitJasonImage +// +// Created by Areej on 21/12/2021. +// + +import UIKit + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + // MARK: UISceneSession Lifecycle + + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } + + +} + diff --git a/gitJasonImage/gitJasonImage/Assets.xcassets/AccentColor.colorset/Contents.json b/gitJasonImage/gitJasonImage/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/gitJasonImage/gitJasonImage/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/gitJasonImage/gitJasonImage/Assets.xcassets/AppIcon.appiconset/Contents.json b/gitJasonImage/gitJasonImage/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..9221b9b --- /dev/null +++ b/gitJasonImage/gitJasonImage/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/gitJasonImage/gitJasonImage/Assets.xcassets/Contents.json b/gitJasonImage/gitJasonImage/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/gitJasonImage/gitJasonImage/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/gitJasonImage/gitJasonImage/Base.lproj/LaunchScreen.storyboard b/gitJasonImage/gitJasonImage/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/gitJasonImage/gitJasonImage/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gitJasonImage/gitJasonImage/Base.lproj/Main.storyboard b/gitJasonImage/gitJasonImage/Base.lproj/Main.storyboard new file mode 100644 index 0000000..7a676bc --- /dev/null +++ b/gitJasonImage/gitJasonImage/Base.lproj/Main.storyboard @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gitJasonImage/gitJasonImage/GetImage.swift b/gitJasonImage/gitJasonImage/GetImage.swift new file mode 100644 index 0000000..9a312a5 --- /dev/null +++ b/gitJasonImage/gitJasonImage/GetImage.swift @@ -0,0 +1,22 @@ +// +// GetImage.swift +// gitJasonImage +// +// Created by Areej on 21/12/2021. +// + +import Foundation + + +struct DataModel : Codable{ + + var items : [ItemsModel] +} +struct ItemsModel: Codable { + + var media : Media +} + +struct Media : Codable{ + var m : String +} diff --git a/gitJasonImage/gitJasonImage/ImageViewCell.swift b/gitJasonImage/gitJasonImage/ImageViewCell.swift new file mode 100644 index 0000000..71806d7 --- /dev/null +++ b/gitJasonImage/gitJasonImage/ImageViewCell.swift @@ -0,0 +1,30 @@ +// +// ImageViewCell.swift +// gitJasonImage +// +// Created by Areej on 21/12/2021. +// + +import UIKit + +class ImageViewCell: UITableViewCell { + + + @IBOutlet weak var img: UIImageView! + + override func awakeFromNib() { + super.awakeFromNib() + + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + func config(url : String){ + + img.layer.cornerRadius = 10 + } + +} diff --git a/gitJasonImage/gitJasonImage/Info.plist b/gitJasonImage/gitJasonImage/Info.plist new file mode 100644 index 0000000..dd3c9af --- /dev/null +++ b/gitJasonImage/gitJasonImage/Info.plist @@ -0,0 +1,25 @@ + + + + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + + diff --git a/gitJasonImage/gitJasonImage/SceneDelegate.swift b/gitJasonImage/gitJasonImage/SceneDelegate.swift new file mode 100644 index 0000000..a10ac89 --- /dev/null +++ b/gitJasonImage/gitJasonImage/SceneDelegate.swift @@ -0,0 +1,52 @@ +// +// SceneDelegate.swift +// gitJasonImage +// +// Created by Areej on 21/12/2021. +// + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + guard let _ = (scene as? UIWindowScene) else { return } + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git a/gitJasonImage/gitJasonImage/ViewController.swift b/gitJasonImage/gitJasonImage/ViewController.swift new file mode 100644 index 0000000..f49b00f --- /dev/null +++ b/gitJasonImage/gitJasonImage/ViewController.swift @@ -0,0 +1,94 @@ +// +// ViewController.swift +// gitJasonImage +// +// Created by Areej on 21/12/2021. +// + +import UIKit +extension UIImageView { + func downloaded(from url: URL, contentMode mode: ContentMode = .scaleAspectFit) { + contentMode = mode + URLSession.shared.dataTask(with: url) { data, response, error in + guard + let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200, + let mimeType = response?.mimeType, mimeType.hasPrefix("image"), + let data = data, error == nil, + let image = UIImage(data: data) + else { return } + DispatchQueue.main.async() { [weak self] in + self?.image = image + } + }.resume() + } + func downloaded(from link: String, contentMode mode: ContentMode = .scaleAspectFit) { + guard let url = URL(string: link) else { return } + downloaded(from: url, contentMode: mode) + } +} +class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { + var images = [Media]() + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return images.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! ImageViewCell + cell.img.contentMode = .scaleAspectFill +// if let url = URL(string: images[indexPath.row].m){ +// let task = URLSession.shared.dataTask(with: url) { data, response, error in +// +// guard let data = data, error == nil else {return} +// DispatchQueue.main.async { +// cell.img.image = UIImage(data: data) +// } +// } +// +// task.resume() +// } + let defaultlink = "https://api.flickr.com" + let completelink = defaultlink + images[indexPath.row].m + cell.img.downloaded(from: completelink) + return cell + } + + var tableView = UITableView() + + override func viewDidLoad() { + super.viewDidLoad() + + tableView.delegate = self + tableView.dataSource = self + + let url = URL(string: "https://api.flickr.com/services/feeds/photos_public.gne?format=json&tags=flower&nojsoncallback=1#") + let session = URLSession.shared + + let task = session.dataTask(with: url!) { data, response, error in + guard let data = data else { + return + } + do{ + let decoder = JSONDecoder() + let decodeData = try decoder.decode(DataModel.self, from: data) + print("img = \(decodeData.items)") +// for i in decodeData.items{ +// var urlImage = ImageViewCell() +// self.images.append(Media(m:urlImage.img.image!)) +// } + + }catch{ + print(error.localizedDescription) + } + DispatchQueue.main.async { + self.tableView.reloadData() + } + } + task.resume() + } + + } + + + +