쪽지발송 성공
Click here
재능넷 이용방법
재능넷 이용방법 동영상편
가입인사 이벤트
판매 수수료 안내
안전거래 TIP
재능인 인증서 발급안내

🌲 지식인의 숲 🌲

🌳 디자인
🌳 음악/영상
🌳 문서작성
🌳 번역/외국어
🌳 프로그램개발
🌳 마케팅/비즈니스
🌳 생활서비스
🌳 철학
🌳 과학
🌳 수학
🌳 역사
구매 만족 후기
추천 재능









29, 디자이너 초이







         
232, 씨쏘네임

639, PHOSHIN






227, 사진빨김작가

해당 지식과 관련있는 인기재능

 안녕하세요. 안드로이드 기반 개인 앱, 프로젝트용 앱부터 그 이상 기능이 추가된 앱까지 제작해 드립니다.  - 앱 개발 툴: 안드로이드...

 운영하는 사이트 주소가 있다면 사이트를 안드로이드 앱으로 만들어 드립니다.기본 5000원은 아무런 기능이 없고 단순히 html 페이지를 로딩...

소개안드로이드 기반 어플리케이션 개발 후 서비스를 하고 있으며 스타트업 경험을 통한 앱 및 서버, 관리자 페이지 개발 경험을 가지고 있습니다....

안녕하세요.신호처리를 전공한 개발자 입니다. 1. 영상신호처리, 생체신호처리 알고리즘 개발2. 안드로이드 앱 개발 3. 윈도우 프로그램...

SwiftUI와 UIKit 함께 사용하기

2025-01-26 05:45:44

재능넷
조회수 92 댓글수 0

SwiftUI와 UIKit 함께 사용하기: 최강의 조합! 🚀

콘텐츠 대표 이미지 - SwiftUI와 UIKit 함께 사용하기

 

 

안녕, 친구들! 오늘은 정말 흥미진진한 주제로 찾아왔어. 바로 SwiftUI와 UIKit을 함께 사용하는 방법에 대해 알아볼 거야. 이 두 가지를 조합하면 어떤 마법 같은 일이 벌어질까? 🧙‍♂️✨

먼저, 우리가 왜 이 두 가지를 함께 사용하려고 하는지 생각해보자. SwiftUI는 애플이 최근에 내놓은 새로운 UI 프레임워크야. 간단하고 선언적인 문법으로 UI를 만들 수 있어서 개발자들 사이에서 인기 만점이지. 반면에 UIKit은 오래된 친구야. 안정적이고 다양한 기능을 제공하지만, 좀 복잡하고 장황한 면이 있어.

그래서 우리는 이 두 가지의 장점만 쏙쏙 골라서 사용하려고 해. 마치 재능넷에서 다양한 재능을 조합해서 멋진 프로젝트를 만들어내는 것처럼 말이야! 🎨🛠️

🔑 핵심 포인트: SwiftUI의 간결함과 UIKit의 강력함을 결합하면, 우리는 더욱 효율적이고 멋진 앱을 만들 수 있어!

자, 이제 본격적으로 SwiftUI와 UIKit을 함께 사용하는 방법에 대해 알아보자. 준비됐니? 출발~! 🏁

1. SwiftUI에서 UIKit 뷰 사용하기 🔄

먼저, SwiftUI 프로젝트에 UIKit 뷰를 어떻게 추가할 수 있는지 알아보자. 이게 바로 UIViewRepresentable 프로토콜의 마법이야! 😎

UIViewRepresentable 프로토콜을 사용하면 UIKit의 뷰를 SwiftUI에서 사용할 수 있어. 이 프로토콜은 두 가지 필수 메서드를 요구해:

  • makeUIView(context:): UIKit 뷰를 생성하고 초기 설정을 하는 메서드
  • updateUIView(_:context:): SwiftUI의 상태가 변경될 때 UIKit 뷰를 업데이트하는 메서드

자, 이제 예제를 통해 살펴보자. UIKit의 UISlider를 SwiftUI에서 사용하는 방법을 알아볼게.


import SwiftUI
import UIKit

struct UISliderView: UIViewRepresentable {
    @Binding var value: Double
    
    func makeUIView(context: Context) -> UISlider {
        let slider = UISlider()
        slider.minimumValue = 0
        slider.maximumValue = 100
        slider.addTarget(context.coordinator, action: #selector(Coordinator.valueChanged(_:)), for: .valueChanged)
        return slider
    }
    
    func updateUIView(_ uiView: UISlider, context: Context) {
        uiView.value = Float(value)
    }
    
    func makeCoordinator() -> Coordinator {
        Coordinator(value: $value)
    }
    
    class Coordinator: NSObject {
        var value: Binding<double>
        
        init(value: Binding<double>) {
            self.value = value
        }
        
        @objc func valueChanged(_ sender: UISlider) {
            value.wrappedValue = Double(sender.value)
        }
    }
}
</double></double>

우와, 코드가 좀 길어 보이지? 하나씩 뜯어보자!

  1. UISliderView 구조체를 만들고 UIViewRepresentable 프로토콜을 채택해.
  2. @Binding var value로 슬라이더의 값을 SwiftUI와 연동해.
  3. makeUIView 메서드에서 UISlider를 생성하고 초기 설정을 해.
  4. updateUIView 메서드에서 SwiftUI의 상태가 변경될 때 슬라이더 값을 업데이트해.
  5. Coordinator 클래스를 만들어서 UIKit의 이벤트를 SwiftUI로 전달해.

이렇게 하면 SwiftUI에서 UISlider를 사용할 수 있어! 멋지지 않니? 🎉

💡 팁: UIViewRepresentable을 사용할 때는 성능을 고려해야 해. 복잡한 UIKit 뷰를 자주 업데이트하면 앱 성능에 영향을 줄 수 있어.

이제 이 UISliderView를 SwiftUI 뷰에서 어떻게 사용하는지 볼까?


struct ContentView: View {
    @State private var sliderValue: Double = 50
    
    var body: some View {
        VStack {
            Text("슬라이더 값: \(sliderValue, specifier: "%.2f")")
            UISliderView(value: $sliderValue)
                .frame(height: 44)
            Button("리셋") {
                sliderValue = 50
            }
        }
        .padding()
    }
}

짜잔~ 이렇게 하면 SwiftUI 뷰 안에 UIKit의 UISlider가 들어가게 돼. 슬라이더를 움직이면 위의 텍스트가 실시간으로 업데이트되고, 리셋 버튼을 누르면 슬라이더가 중앙으로 돌아가. 완벽한 조화, 그렇지? 😍

SwiftUI와 UIKit 통합 다이어그램 SwiftUI UIKit UIViewRepresentable UIHostingController

이 다이어그램을 보면 SwiftUI와 UIKit이 어떻게 서로 소통하는지 한눈에 볼 수 있어. UIViewRepresentable은 UIKit에서 SwiftUI로, UIHostingController는 SwiftUI에서 UIKit으로 가는 다리 역할을 해. 멋지지? 🌉

자, 이제 우리는 SwiftUI에서 UIKit 뷰를 사용하는 방법을 알게 됐어. 하지만 이게 전부가 아니야. 다음 섹션에서는 반대로 UIKit에서 SwiftUI 뷰를 사용하는 방법을 알아볼 거야. 계속 따라와! 🚶‍♂️🚶‍♀️

2. UIKit에서 SwiftUI 뷰 사용하기 🔄

이번에는 반대로 가보자! UIKit 프로젝트에 SwiftUI 뷰를 어떻게 추가할 수 있을까? 이건 UIHostingController를 사용하면 돼. 😎

UIHostingController는 SwiftUI 뷰를 감싸서 UIKit 환경에서 사용할 수 있게 해주는 특별한 뷰 컨트롤러야. 마치 SwiftUI 뷰를 위한 집 같은 거지! 🏠

자, 예제를 통해 살펴보자. SwiftUI로 만든 간단한 카운터 뷰를 UIKit 뷰 컨트롤러에 추가하는 방법을 알아볼게.

먼저, SwiftUI로 카운터 뷰를 만들어보자:


import SwiftUI

struct CounterView: View {
    @State private var count = 0
    
    var body: some View {
        VStack {
            Text("카운트: \(count)")
                .font(.largeTitle)
            
            HStack {
                Button("감소") {
                    count -= 1
                }
                .padding()
                .background(Color.red)
                .foregroundColor(.white)
                .cornerRadius(10)
                
                Button("증가") {
                    count += 1
                }
                .padding()
                .background(Color.green)
                .foregroundColor(.white)
                .cornerRadius(10)
            }
        }
    }
}

이제 이 SwiftUI 뷰를 UIKit 뷰 컨트롤러에 추가해보자:


import UIKit
import SwiftUI

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // SwiftUI 뷰 생성
        let counterView = CounterView()
        
        // UIHostingController를 사용해 SwiftUI 뷰를 UIKit에 통합
        let hostingController = UIHostingController(rootView: counterView)
        
        // 호스팅 컨트롤러를 자식 뷰 컨트롤러로 추가
        addChild(hostingController)
        view.addSubview(hostingController.view)
        hostingController.didMove(toParent: self)
        
        // 호스팅 컨트롤러의 뷰 크기 및 위치 설정
        hostingController.view.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            hostingController.view.centerXAnchor.constraint(equalTo: view.centerXAnchor),
            hostingController.view.centerYAnchor.constraint(equalTo: view.centerYAnchor),
            hostingController.view.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.8),
            hostingController.view.heightAnchor.constraint(equalToConstant: 200)
        ])
    }
}

우와, 이렇게 하면 UIKit 앱 안에 SwiftUI로 만든 카운터 뷰가 들어가게 돼! 🎉

🔑 핵심 포인트: UIHostingController를 사용하면 SwiftUI 뷰를 UIKit 환경에 쉽게 통합할 수 있어. 이를 통해 새로운 SwiftUI 기능을 기존 UIKit 프로젝트에 점진적으로 도입할 수 있지!

이 방법을 사용하면 재능넷 같은 플랫폼에서도 기존의 UIKit 기반 앱에 새로운 SwiftUI 기능을 조금씩 추가할 수 있어. 예를 들어, 새로운 기능을 SwiftUI로 개발하고 기존 앱에 통합하는 식으로 말이야. 점진적인 업그레이드, 멋지지 않니? 😎

UIKit에서 SwiftUI 뷰 사용하기 UIKit View Controller UIHostingController SwiftUI View 통합

이 다이어그램을 보면 UIKit 뷰 컨트롤러 안에 UIHostingController가 있고, 그 안에 SwiftUI 뷰가 들어있는 걸 볼 수 있어. 마치 러시아 인형처럼 하나씩 포개져 있는 느낌이지? 🪆

하지만 여기서 끝이 아니야! SwiftUI와 UIKit을 함께 사용하는 방법은 더 많아. 다음 섹션에서는 데이터 바인딩과 상태 관리에 대해 알아볼 거야. 계속 따라와! 🚀

3. 데이터 바인딩과 상태 관리 🔗

자, 이제 우리는 SwiftUI와 UIKit을 서로 섞어 쓸 수 있다는 걸 알았어. 근데 여기서 한 가지 중요한 문제가 있어. 바로 데이터를 어떻게 주고받을 것인가하는 거지! 🤔

SwiftUI는 선언적이고 반응형인 데이터 흐름을 가지고 있어. 반면에 UIKit은 명령형이고 델리게이트 패턴을 많이 사용하지. 이 두 가지를 어떻게 조화롭게 사용할 수 있을까?

3.1 SwiftUI에서 UIKit으로 데이터 전달하기

SwiftUI에서 UIKit으로 데이터를 전달할 때는 Binding을 사용할 수 있어. 예를 들어, 우리가 앞서 만든 UISliderView를 다시 한번 볼까?


struct UISliderView: UIViewRepresentable {
    @Binding var value: Double
    
    // ... (이전 코드와 동일)
}

여기서 @Binding var value가 바로 그 역할을 해. SwiftUI의 상태를 UIKit 뷰와 연결해주는 다리 역할을 하는 거지. 🌉

3.2 UIKit에서 SwiftUI로 데이터 전달하기

반대로 UIKit에서 SwiftUI로 데이터를 전달할 때는 어떻게 할까? 이때는 ObservableObject 프로토콜을 사용할 수 있어. 예를 들어보자:


import Combine

class UserData: ObservableObject {
    @Published var username: String = ""
    @Published var age: Int = 0
}

class UserProfileViewController: UIViewController {
    let userData = UserData()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let profileView = ProfileView().environmentObject(userData)
        let hostingController = UIHostingController(rootView: profileView)
        
        addChild(hostingController)
        view.addSubview(hostingController.view)
        hostingController.didMove(toParent: self)
        
        // 뷰 크기 설정 등의 코드...
    }
    
    func updateUserData(username: String, age: Int) {
        userData.username = username
        userData.age = age
    }
}

struct ProfileView: View {
    @EnvironmentObject var userData: UserData
    
    var body: some View {
        VStack {
            Text("사용자 이름: \(userData.username)")
            Text("나이: \(userData.age)")
        }
    }
}

우와, 좀 복잡해 보이지? 하나씩 뜯어보자!

  1. UserData 클래스를 만들고 ObservableObject 프로토콜을 채택해.
  2. @Published 프로퍼티 래퍼를 사용해 변경을 감지할 수 있는 프로퍼티를 만들어.
  3. UIKit의 UserProfileViewController에서 UserData 인스턴스를 만들어.
  4. SwiftUI의 ProfileView를 만들고 @EnvironmentObject로 UserData를 받아.
  5. UIHostingController를 사용해 ProfileView를 UIKit에 통합하고, environmentObject로 userData를 전달해.

이렇게 하면 UIKit에서 데이터를 변경하면 SwiftUI 뷰가 자동으로 업데이트돼. 마법 같지 않니? ✨

💡 팁: ObservableObject와 @Published를 사용하면 UIKit과 SwiftUI 사이의 데이터 흐름을 쉽게 관리할 수 있어. 재능넷 같은 복잡한 앱에서도 이 방식을 사용하면 데이터 관리가 한결 수월해질 거야!

SwiftUI와 UIKit 간의 데이터 흐름 SwiftUI UIKit Binding ObservableObject

이 다이어그램을 보면 SwiftUI와 UIKit 사이의 데이터 흐름을 한눈에 볼 수 있어. Binding은 SwiftUI에서 UIKit으로, ObservableObject는 UIKit에서 SwiftUI로 데이터를 전달하는 역할을 해. 양방향 소통, 멋지지? 🔄

자, 이제 우리는 SwiftUI와 UIKit 사이에서 데이터를 주고받는 방법을 알게 됐어. 이걸 잘 활용하면 두 프레임워크의 장점을 모두 살릴 수 있지. 예를 들어, 재능넷에서 사용자 프로필 페이지는 SwiftUI로 만들고, 복잡한 데이터 처리는 UIKit에서 하는 식으로 말이야. 👨‍💻👩‍💻

다음 섹션에서는 실제 프로젝트에서 SwiftUI와 UIKit을 함께 사용할 때의 베스트 프랙티스에 대해 알아볼 거야. 계속 따라와! 🚀

4. 실제 프로젝트에서의 베스트 프랙티스 🏆

자, 이제 우리는 SwiftUI와 UIKit을 함께 사용하는 방법을 알게 됐어. 근데 실제 프로젝트에서는 어떻게 적용해야 할까? 여기 몇 가지 베스트 프랙티스를 소개할게. 이걸 잘 따르면 재능넷 같은 복잡한 앱에서도 SwiftUI와 UIKit을 조화롭게 사용할 수 있을 거야! 👨‍🎨👩‍🎨

4.1 점진적인 도입

기존의 UIKit 프로젝트에 SwiftUI를 도입할 때는 점진적으로 하는 게 좋아. 한 번에 모든 걸 바꾸려고 하면 너무 복잡해지고 버그가 생길 수 있거든. 대신에 새로운 기능을 추가할 때 SwiftUI를 사용하거나, 기존 기능을 하나씩 SwiftUI로 리팩토링하는 방식을 추천해.

🔑 핵심 포인트: 재능넷 같은 플랫폼에서 새로운 기능(예: 새로운 프로필 페이지)을 추가할 때 SwiftUI를 사용해보 는 것부터 시작해볼 수 있어. 이렇게 하면 기존 기능을 건드리지 않으면서도 SwiftUI의 장점을 활용할 수 있지!

4.2 재사용 가능한 컴포넌트 만들기

SwiftUI와 UIKit 사이의 다리 역할을 하는 재사용 가능한 컴포넌트를 만들어두면 좋아. 예를 들어, 자주 사용하는 UIKit 뷰들을 SwiftUI에서 사용할 수 있게 래핑해두는 거지. 이렇게 하면 코드 중복을 줄이고 일관성을 유지할 수 있어.


struct ReusableUITextView: UIViewRepresentable {
    @Binding var text: String
    var isEditable: Bool = true
    
    func makeUIView(context: Context) -> UITextView {
        let textView = UITextView()
        textView.isEditable = isEditable
        textView.font = UIFont.preferredFont(forTextStyle: .body)
        textView.delegate = context.coordinator
        return textView
    }
    
    func updateUIView(_ uiView: UITextView, context: Context) {
        uiView.text = text
    }
    
    func makeCoordinator() -> Coordinator {
        Coordinator(self)
    }
    
    class Coordinator: NSObject, UITextViewDelegate {
        var parent: ReusableUITextView
        
        init(_ parent: ReusableUITextView) {
            self.parent = parent
        }
        
        func textViewDidChange(_ textView: UITextView) {
            parent.text = textView.text
        }
    }
}

이런 식으로 만들어두면, SwiftUI에서 UITextView를 쉽게 사용할 수 있어:


struct ContentView: View {
    @State private var text = "Hello, World!"
    
    var body: some View {
        ReusableUITextView(text: $text)
            .frame(height: 200)
    }
}

4.3 성능 최적화

SwiftUI와 UIKit을 함께 사용할 때는 성능에 특히 신경 써야 해. SwiftUI는 상태 변화에 따라 뷰를 자동으로 업데이트하는데, 이 과정이 너무 자주 일어나면 성능 저하가 발생할 수 있거든. 따라서 다음과 같은 점들을 고려해봐:

  • 큰 UIKit 뷰를 SwiftUI로 래핑할 때는 equatable() 수정자를 사용해 불필요한 업데이트를 방지해.
  • 복잡한 계산이 필요한 경우, @State 대신 @StateObject를 사용해 객체의 생명주기를 더 잘 관리해.
  • 큰 리스트를 표시할 때는 UIKit의 UITableView나 UICollectionView를 사용하는 것이 더 효율적일 수 있어.

💡 팁: 재능넷 같은 앱에서 긴 목록(예: 재능 목록)을 표시할 때, SwiftUI의 List와 UIKit의 UITableView 중 어떤 것이 더 성능이 좋은지 테스트해보고 선택하는 것이 좋아.

4.4 테스트 전략

SwiftUI와 UIKit을 함께 사용할 때는 테스트 전략도 조금 달라져야 해. SwiftUI는 상태 기반 테스트가 가능하지만, UIKit은 주로 동작 기반 테스트를 사용하거든. 따라서:

  • SwiftUI 뷰에 대해서는 ViewInspector 같은 라이브러리를 사용해 뷰의 상태와 구조를 테스트해.
  • UIKit 컴포넌트에 대해서는 전통적인 XCTest 프레임워크를 사용해 동작을 테스트해.
  • 통합 테스트를 통해 SwiftUI와 UIKit 컴포넌트가 잘 상호작용하는지 확인해.

import XCTest
import ViewInspector
@testable import YourApp

class ProfileViewTests: XCTestCase {
    func testProfileView() throws {
        let userData = UserData(username: "SwiftGuru", age: 30)
        let view = ProfileView().environmentObject(userData)
        
        let username = try view.inspect().find(viewWithId: "username").text().string()
        XCTAssertEqual(username, "사용자 이름: SwiftGuru")
        
        let age = try view.inspect().find(viewWithId: "age").text().string()
        XCTAssertEqual(age, "나이: 30")
    }
}

이런 식으로 SwiftUI 뷰를 테스트할 수 있어. 물론 실제 앱에서는 더 복잡한 테스트 케이스가 필요하겠지만, 기본 아이디어는 이런 거야.

4.5 문서화와 팀 교육

SwiftUI와 UIKit을 함께 사용하는 프로젝트에서는 문서화와 팀 교육이 특히 중요해. 왜냐하면 두 프레임워크의 패러다임이 다르기 때문이지. 따라서:

  • 프로젝트의 아키텍처와 SwiftUI/UIKit 사용 가이드라인을 명확하게 문서화해.
  • 정기적인 코드 리뷰를 통해 팀원들이 두 프레임워크를 올바르게 사용하고 있는지 확인해.
  • SwiftUI와 UIKit에 대한 팀 내 스터디 그룹을 만들어 지속적인 학습을 장려해.

이렇게 하면 팀 전체가 일관된 방식으로 SwiftUI와 UIKit을 사용할 수 있고, 새로운 팀원이 합류했을 때도 빠르게 적응할 수 있을 거야.

SwiftUI와 UIKit 통합 베스트 프랙티스 점진적 도입 재사용 컴포넌트 성능 최적화 테스트 전략 문서화와 교육 SwiftUI + UIKit 베스트 프랙티스

이 다이어그램은 우리가 지금까지 이야기한 SwiftUI와 UIKit 통합의 베스트 프랙티스를 한눈에 보여줘. 각각의 원은 중요한 포인트를 나타내고 있어. 이 모든 요소들이 조화롭게 작동할 때, 우리는 진정으로 SwiftUI와 UIKit의 장점을 모두 활용할 수 있게 되는 거지. 🎨🛠️

자, 이제 우리는 SwiftUI와 UIKit을 함께 사용하는 방법부터 실제 프로젝트에서의 베스트 프랙티스까지 알아봤어. 이 지식을 바탕으로 재능넷 같은 복잡한 앱도 더욱 효율적으로 개발할 수 있을 거야. 새로운 기술을 도입하면서도 기존의 안정성을 유지하는 것, 그게 바로 우리가 추구해야 할 방향이지! 🚀✨

SwiftUI와 UIKit을 함께 사용하는 여정은 여기서 끝이 아니야. 애플은 계속해서 새로운 기능을 추가하고 있고, 개발자 커뮤니티에서도 다양한 기법들이 공유되고 있어. 항상 최신 트렌드를 주시하고, 지속적으로 학습하는 자세가 중요해. 그럼 이제 배운 내용을 실제 프로젝트에 적용해볼 준비가 됐니? 화이팅! 💪😊

관련 키워드

  • SwiftUI
  • UIKit
  • UIViewRepresentable
  • UIHostingController
  • 데이터 바인딩
  • ObservableObject
  • 점진적 도입
  • 재사용 컴포넌트
  • 성능 최적화
  • 테스트 전략

지적 재산권 보호

지적 재산권 보호 고지

  1. 저작권 및 소유권: 본 컨텐츠는 재능넷의 독점 AI 기술로 생성되었으며, 대한민국 저작권법 및 국제 저작권 협약에 의해 보호됩니다.
  2. AI 생성 컨텐츠의 법적 지위: 본 AI 생성 컨텐츠는 재능넷의 지적 창작물로 인정되며, 관련 법규에 따라 저작권 보호를 받습니다.
  3. 사용 제한: 재능넷의 명시적 서면 동의 없이 본 컨텐츠를 복제, 수정, 배포, 또는 상업적으로 활용하는 행위는 엄격히 금지됩니다.
  4. 데이터 수집 금지: 본 컨텐츠에 대한 무단 스크래핑, 크롤링, 및 자동화된 데이터 수집은 법적 제재의 대상이 됩니다.
  5. AI 학습 제한: 재능넷의 AI 생성 컨텐츠를 타 AI 모델 학습에 무단 사용하는 행위는 금지되며, 이는 지적 재산권 침해로 간주됩니다.

재능넷은 최신 AI 기술과 법률에 기반하여 자사의 지적 재산권을 적극적으로 보호하며,
무단 사용 및 침해 행위에 대해 법적 대응을 할 권리를 보유합니다.

© 2025 재능넷 | All rights reserved.

댓글 작성
0/2000

댓글 0개

해당 지식과 관련있는 인기재능

안녕하세요. 경력 8년차 프리랜서 개발자 입니다.피쳐폰 2g 때부터 지금까지 모바일 앱 개발을 전문적으로 진행해 왔으며,신속하 정확 하게 의뢰하...

미국석사준비중인 학생입니다.안드로이드 난독화와 LTE관련 논문 작성하면서 기술적인것들 위주로 구현해보았고,보안기업 개발팀 인턴도 오랜시간 ...

 주문전 꼭 쪽지로 문의메세지 주시면 감사하겠습니다.* Skills (order by experience desc)Platform : Android, Web, Hybrid(Cordova), Wind...

애플리케이션 서비스 안녕하세요. 안드로이드 개발자입니다.여러분들의 홈페이지,블로그,카페,모바일 등 손쉽게 어플로 제작 해드립니다.요즘...

📚 생성된 총 지식 13,291 개

  • (주)재능넷 | 대표 : 강정수 | 경기도 수원시 영통구 봉영로 1612, 7층 710-09 호 (영통동) | 사업자등록번호 : 131-86-65451
    통신판매업신고 : 2018-수원영통-0307 | 직업정보제공사업 신고번호 : 중부청 2013-4호 | jaenung@jaenung.net

    (주)재능넷의 사전 서면 동의 없이 재능넷사이트의 일체의 정보, 콘텐츠 및 UI등을 상업적 목적으로 전재, 전송, 스크래핑 등 무단 사용할 수 없습니다.
    (주)재능넷은 통신판매중개자로서 재능넷의 거래당사자가 아니며, 판매자가 등록한 상품정보 및 거래에 대해 재능넷은 일체 책임을 지지 않습니다.

    Copyright © 2025 재능넷 Inc. All rights reserved.
ICT Innovation 대상
미래창조과학부장관 표창
서울특별시
공유기업 지정
한국데이터베이스진흥원
콘텐츠 제공서비스 품질인증
대한민국 중소 중견기업
혁신대상 중소기업청장상
인터넷에코어워드
일자리창출 분야 대상
웹어워드코리아
인터넷 서비스분야 우수상
정보통신산업진흥원장
정부유공 표창장
미래창조과학부
ICT지원사업 선정
기술혁신
벤처기업 확인
기술개발
기업부설 연구소 인정
마이크로소프트
BizsPark 스타트업
대한민국 미래경영대상
재능마켓 부문 수상
대한민국 중소기업인 대회
중소기업중앙회장 표창
국회 중소벤처기업위원회
위원장 표창