묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Flutter 초입문 왕초보편
99강 github가 익숙하지 않아서 그런데, github에서 파일을 폴더 채로 받는 방법이 있을까요?
분명히 방법이 있을거 같은데음원파일을 하나하나 받고 있어서 혹시나 해서요
-
해결됨[Lv.1] 누구나 할 수 있는 - SwiftUI Basic with iOS 17
NavigationView를 NavigationStack 으로 변경관련입니다.
강의 잘 들었습니다.만드신 앱에서 NavigationView를 NavigationStack 으로 변경하는 방법을 알고 싶습니다.감사합니다.
-
미해결Flutter 초입문 왕초보편
003 강의 중 다른 문제 질문드립니다.
flutter doctor 를 입력하라는 내용을 보고 따라 쳤는데 아래와 같은 문제가 발생하여 질문드립니다.flutter : 'flutter' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오. 위치 줄:1 문자:1 + flutter doctor + ~~~~~~~ + CategoryInfo : ObjectNotFound: (flutter:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
-
미해결SwiftUI - iOS14 퍼펙트 가이드
Grid View 강의에서 animation 질문
ScrollView { LazyVGrid(columns: selectedGridType.columns) { ForEach(items) { item in Image(item.imageName) .resizable() .aspectRatio(contentMode: .fit) } } .animation(.default) // 레이아웃 변경시 부드럽게 변경 } animation(.default)이 메서드가 deprecated돼서 animation(.default, value: ...) 로 변경이 필요하다고 합니다. 혹시 어떻게 해야 비슷한 효과가 나올까요?
-
미해결Flutter 초입문 왕초보편
52강 키/몸무게 값에 대한 조건을 더 추가해주고 싶으면 어떻게 해야 할까요?
만약에 키나 몸무게 필드에 숫자가 아닌 값을 입력할 경우 '숫자를 입력하세요'라고 출력하고 싶은데 어떻게 하면 좋을까요? 그리고 입력된 숫자가 특정 범위를 넘길 경우 제한 하는 방법도 궁금합니다. 뭔가 아래와 같은 느낌으로 하고싶은데 방법이 궁금합니다.TextFormField( decoration: const InputDecoration( border: OutlineInputBorder(), hintText: '키', ), keyboardType: TextInputType.number, validator: (value){ if(value == null || value.isEmpty){ return '키를 입력하세요'; }else if(value의 타입 != TextInputType.number){ return '숫자를 입력하세요.'; }else if(value > 1000){ return '정상적인 값이 아닙니다.'; } return null; }, ),
-
해결됨앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
(기초-3) 가위바위보 앱 만들기 / 코드 설정하기 - 2 (기초 앱 12강) 내 comChoice값의 자동 리셋
// // ViewController.swift // RPSGame // // Created by 윤동주 on 2023/08/23. // import UIKit class ViewController: UIViewController { @IBOutlet weak var mainLabel: UILabel! @IBOutlet weak var comImageView: UIImageView! @IBOutlet weak var myImageView: UIImageView! @IBOutlet weak var comChoiceLabel: UILabel! @IBOutlet weak var myChoiceLabel: UILabel! var comChoice:Rps = Rps(rawValue: Int.random(in: 0...2))! var myChoice:Rps = Rps.rock override func viewDidLoad() { super.viewDidLoad() comImageView.image = #imageLiteral(resourceName: "ready") myImageView.image = UIImage(named: "ready.png") comChoiceLabel.text = "준비" myChoiceLabel.text = "준비" } @IBAction func rpsButtonTabbed(_ sender: UIButton) { let title = sender.currentTitle! switch title { case "가위": myChoice = Rps.scissors case "바위": myChoice = Rps.rock case "보": myChoice = Rps.paper default: break } } @IBAction func selectButtonTabbed(_ sender: UIButton) { switch comChoice { case Rps.scissors: comImageView.image = UIImage(named: "scissors.png") comChoiceLabel.text = "가위" case Rps.rock: comImageView.image = UIImage(named: "rock.png") comChoiceLabel.text = "바위" case Rps.paper: comImageView.image = UIImage(named: "paper.png") comChoiceLabel.text = "보" } switch myChoice { case .scissors: myImageView.image = #imageLiteral(resourceName: "scissors") myChoiceLabel.text = "가위" case .rock: myImageView.image = #imageLiteral(resourceName: "rock") myChoiceLabel.text = "바위" case .paper: myImageView.image = #imageLiteral(resourceName: "paper") myChoiceLabel.text = "보" } if comChoice == myChoice { mainLabel.text = "비겼다." } else if comChoice == .rock && myChoice == .paper { mainLabel.text = "이겼다." } else if comChoice == .scissors && myChoice == .rock { mainLabel.text = "이겼다." } else if comChoice == .paper && myChoice == .scissors { mainLabel.text = "이겼다." } else { mainLabel.text = "졌다." } } @IBAction func resetButtonTabbed(_ sender: UIButton) { comImageView.image = #imageLiteral(resourceName: "ready") comChoiceLabel.text = "준비" myImageView.image = #imageLiteral(resourceName: "ready") myChoiceLabel.text = "준비" mainLabel.text = "선택하세요." // comChoice = Rps(rawValue: Int.random(in: 0...2))! } } 위와 같이 마지막에 comChoice에 대해 다시 random값 설정을 안해줘도 comChoice값이 새로 다시 랜덤값으로 변경이 됩니다. 이는 resetButtonTabbed에서 comImageView와 comChoiceLabel을 초기화하지 않았을 시에는 변경이 이뤄지지 않습니다. 이유가 무엇인지 궁금합니다.
-
미해결Flutter 초입문 왕초보편
45강 Device list에 iOS 단말이 보이지 않는데 추가하는 법이 있을까요
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
swift에서 import 헤더를 안해도 되는이유가 궁금합니다.
보통 다른언어의 경우 다른 클래스파일을 사용할경우 (import 클래스파일) 이런식으로 선언해주어야지만 해당 클래스파일을 사용 할수 있다고 알고있습니다. 그런데 swift의 경우 따로 (import 클래스파일) 을 해주지 않아도 사용이 가능해서 어떤 원리로 작동되는지 궁금합니다.
-
미해결Flutter 초입문 왕초보편
Image.asset이 정상적으로 되지 않습니다.
pubspec.yaml 에도 경로를 잘 지정했고,사진파일이 잘못 되었나해서 바꿔가면서 시도해도 마찬가지로 아래와 같이 파일을 찾을 수 없다고 뜨네요.
-
해결됨Only Javascript만으로 배우는 하이브리드앱 패키징
코르도바와 다른 프로젝트 연동 질문입니다.
안녕하세요.공부하다가 궁금한점이 있어서 질문을 드릴려고 합니다.제가 기존의 jsp + spring + tomcat으로 웹을 배포하여 서버를 굴리고 있는데 코르도바에서 inappbrowser로 배포된 서버의 특정 URL로 열고 코르도바에서 모바일의 네이티브 기능을 사용할 수 있는것인지 궁금합니다.예를 들면 기존 웹프로젝트(코르도바로 생성된 프로젝트가 아닌)에서 코르도바 inappbrowser로 열고 푸시 알림같은것을 사용할 수 있는지 궁급합니다.
-
미해결Flutter 중급 1편 - 클린 아키텍처
프로바이더 위치 질문
마지막에 main 함수는Provider 설정 이후, RunApp 함수가 실행이 되는 걸로 보입니다.만약 Provider 초기화시 외부 DB와 통신하는 등의 통신시간이 길어진다면... runApp 이 실행되기 전이라서 어플이 동작하지 않을 수 있나요?
-
미해결SwiftUI - iOS14 퍼펙트 가이드
iOS 16 ScrollView에서 proxy.scrollTo 오류
VStack { Button("Scroll To") { withAnimation(.easeInOut) { proxy?.scrollTo(20, anchor: .top) } } ScrollView { ScrollViewReader { proxy in ForEach(0..<50) { index in Text("\(index)") .padding() .id(index) // 아이디 지정해줘야함 } .onAppear(perform: { self.proxy = proxy }) } } }Text에 id를 지정해주지 않으면 스크롤이 되지 않는 오류가 있습니다!
-
미해결해커를 위한 iOS 앱 모의 해킹 전문 과정
탈옥 탐지하여 강제 종료되는 앱 진단
안녕하세요앱스토어 통해서 받은 앱 중에 탈옥감지를 솔루션으로 하는 앱들이 대부분인데 이런 솔루션 중에서 메시지도 띄우지 않고 바로 꺼져버리는 앱이 있더라구요이런 경우엔 탈옥 탐지 우회를 어떻게 해야 할까요?(exit 함수를 Hooking 해보아도 후킹 되지 않고 그냥 꺼집니다. )
-
미해결앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
활용4 데이터이동과 화면전달 중 "직접세그웨이"관련문의
안녕하세요.화면이동 방법 중 직접 세그웨이 활용 시 세그웨이에 연결한 버튼을 IBAction 코드 작성필요 여부 문의입니다. 이유는 수업 참고파일 중 1.NextVC 2.BMI 파일에 다르게 구현되어있기 때문입니다.NextVC에서는 IBAction 코드가 미작성되어있고BMI파일에서는 "BMI계산하기"버튼에 대한 IBAction 코드가 작성되어있습니다.2번파일에서 prepare함수를 호출하기때문에 IBAction을 제외해도 되지 않나해서 돌려보니 에러가 납니다. 기초적인 질문일것같은데 답변 부탁드립니다. :)
-
미해결iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation - 디스패치큐와 오퍼레이션큐의 이해
main.async 작동 질문(+ vs global(),async)
안녕하세요!main.async 작동 관련하여 궁금한점이 있어 질문드립니다.대게, 네트워킹 작업과 같은 부분은 global().async로 메인쓰레드가 아닌 다른 쓰레드로 작업을 보내서 백그라운드에서 돌게 하는데, 어떻게 보면 작동하는 앱(프로세스)별로 메인 쓰레드는 하나일텐데, main.async는 어떻게 작동하는지 잘 모르겠어요.제가 이해하고 있는 부분이 맞는지도 헷갈리네요ㅠ1) 메인 쓰레드에서 서브 쓰레드로 이미지 다운로드 태스킹 보냄2) 이미지 다운로드가 끝나고 컴플리션 핸들러 실행3) main.async로 다운로드 받은 이미지로 뷰 업데이트1)~3) 과정이 대략 비동기를 활용하는 과정인데, 3)에서 main.async로 메인 쓰레드로 작업을 보냈을 때머릿속에서 도식화가 잘 안되는 것 같습니다.어느 부분 강의를 보면 좋을지 답변 부탁드립니다. 감사합니다!
-
해결됨[Lv.1] 누구나 할 수 있는 - SwiftUI Basic with iOS 17
Frame 강의에서 다른 결과물이 나와요
안녕하세요!강의를 보면서 따라했는데 결과물이 다르게 나와서 왜 이런지 여쭤보고 싶어요. 아무래도 위 status bar랑 아래가 오버래핑되는 거 같은데 어떻게 해결해야 되나요? 감사합니다.
-
미해결SwiftUI - iOS14 퍼펙트 가이드
10 list section 강의 잘린건가요?
26분 24초로 되어있는데, 갑자기 잘린 것 같아서 여쭤봅니다^^강의 필요한 부분만 해주셔서 잘 듣고 있습니다. 감사합니다.
-
미해결Flutter 중급 1편 - 클린 아키텍처
폴더 구조에 대해 궁금합니다.
섹션 1, 14번 강의를 듣던중 궁금한점이 생겨 질문드립니다.강의에서는 presentation/home/components 구조로 폴더를 작성하셨는데, 만약 home_screen.dart 파일에서 바텀 네비게이션을 제공하고, 바텀네이게이션에는 마이페이지, 홈페이지, 검색페이지 등등 과 같은 홈페이지와 그 성격이 전혀 다른 페이지로 이동할수 있는 버튼들이 존재하는 경우라면home/components 폴더에 마이페이지, 홈페이지 등 파일 혹은 폴더를 집어넣는다.home 폴더에 다 집어넣는것이 아니라 presentation 폴더에 my_page, search_page 등 폴더를 만들고 각 폴더에 맞는 성격의 파일 및 컴포넌트를 관리한다.어느것이 바람직 할까요? 그리고 retrofit, json_serializable을 사용할때 저희가 작성하는 dart 파일과 generator가 생성하는 g.dart 파일은 각각 도메인 레이어, 데이터 레이어라고 보면 맞는건가요?
-
해결됨Flutter 중급 2편 - 실전 앱 개발 - 미국 주식 앱 (with 클린 아키텍처)
안녕하세요 디버그 모드 관련 여쭤볼게 있어요
디버그모드에서 변수 이름에 커서를 대면 변수가 보여지는데 이거 어떻게 하나요 ..? ㅠ
-
해결됨[Lv.1] 누구나 할 수 있는 - SwiftUI Basic with iOS 17
Frame에 대한 개념 질문
"뷰는 자신의 콘텐트와 자신이 속한 레이아웃에 따라 자동으로 크기가 조절됩니다. 하지만 frame 수정자를 사용하여 뷰의 크기나 영역을 조절 할 수 있습니다."프레임은 해당 글과 같은 역할을 한다고 볼 수 있을거 같은데 아래 실습을 통해 추가적으로 이해를 해보려고 하면 VStack(spacing: 20){ Text("Hello World!") .font(.title) .background(Color.red) .frame(height: 100, alignment: .top) // 100프레임에 대한 컨텐츠는 위에 붙게됨 .background(.orange) .frame(width: 200) .background(Color.purple) .frame(maxWidth: .infinity, alignment: .leading) .background(Color.pink) .frame(height: 400) .background(Color.green) .frame(maxHeight: .infinity, alignment: .top) .background(Color.yellow) } 실질적으로 뷰의 크기나 영역을 frame 함수를 통해 조각조각 붙여나가는 방식으로 구현한다.라고 정리될 거 같습니다. 제가 이해한 게 맞는지 궁금합니다. 이런 식으로 조각을 붙여가면서 구현을 하는 개념으로 이해해도 되는 건지...