콘텐츠로 건너뛰기

iOS(Swift)

[iOS Swift] Tableview 높이 자동으로(동적) 변경하기!!

Tableview뷰를 사용하다 보면 Tableview cell의 height를 고정이 아닌 동적으로 크기를 조절해야 될때가 있습니다

일단 viewDidLoad에 아래를 추가 한 다음

tableview.estimatedRowHeight = UITableView.automaticDimension
tableview.rowHeight = UITableView.automaticDimension

아래 함수를 추가해 주면 됩니다

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableView.automaticDimension
}
    
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableView.automaticDimension
}

만약 최소 높이를 고정하고 싶다면 스토리 보드에서 height constraint를 >= 조건으로 만들면 최소 조건 크기도 설정할 수 있습니다

[iOS Swift] This operation can fail if the version of the OS on the device is incompatible with the installed version of Xcode 에러 해결법 !!

Failed to prepare device for development

This operation can fail if the version of the OS on the device is incompatible with the installed version of Xcode. You may also need to restart your mac and device in order to correctly detect compatibility

Xcode 작업 중 갑자기 폰으로 작업할려고 하면 위와 같은 에러가 뜰때가 있습니다

Xcode와 맥을 최신 버전으로 업데이트 해도 해당 에러가 없어 지지 않아서 고생했는데요 아래처럼 해보세요

1. /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/

위의 디렉토리에 15.4.zip, 15.5.zip, 16.0.zip 파일이 없다면 아래 사이트에서 다운 받아서 복사해서 붙여 넣기 

https://github.com/filsv/iOSDeviceSupport

2. 그래도 안되면 Xcode, 맥북, 아이폰 전부를 재부팅 해본다

저는 아이폰 재부팅 후 해결 했습니다

[iOS Swift] 키보드 위에 닫기 버튼 추가하기!!

Text View나 Text Field에서 키보드를 열고 닫을때 다른 곳을 클릭하거나 드래그로 닫을 수도 있지만

좀 더 직관적으로 사진 처럼 닫기 버튼을 만들 수 있습니다

func addDoneButtonOnKeyboard(){
        let doneToolbar: UIToolbar = UIToolbar(frame: CGRect.init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 50))
        doneToolbar.barStyle = .default

        let flexSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
        let done: UIBarButtonItem = UIBarButtonItem(title:  NSLocalizedString("keyboard_close", comment: ""), style: .done, target: self, action: #selector(self.doneButtonAction))

        let items = [flexSpace, done]
        doneToolbar.items = items
        doneToolbar.sizeToFit()

        tvContent.inputAccessoryView = doneToolbar
}

@objc func doneButtonAction(){
        tvContent.resignFirstResponder()
}

위 소스의 tvContent를 본인의 textview 나 textfield로 변경 하시면 됩니다

글자는 UIBardButtonItem의 title에서 변경 해주시면 됩니다

doneButtonAction은 닫기 버튼을 눌렀을때 키보드를 내리기 위해 필요합니다