TabBarController
TabBar enum으로 구현CaseIterable을 채택함으로 열거형으로 정의된 프로퍼티들을 for문으로 접근할 수 있다MainViewController
UITableView로 구성된다UICollectionViewStoryTableViewCell안의 StoryCollectionViewCellcontentView에 넣어야한다addSubView했을 때, 가로 스크롤이 안된다FeedTableViewCell
ExploreViewController
UISearchController와 UICollectionView로 구성refreshControl을 통해 새로고침하는 UI 구현![]()
AccountViewController
PHPickerViewController를 사용하여 이미지를 선택할 수 있다(이미지 1장만 가능)
UploadFeedViewController
leftBarButton은 dismiss, rightBarButton은 공유imagePickerViewnumberOfSelectedImageLabelPHPickerViewController를 사용하여 이미지를 선택할 수 있다(이미지 여러장 가능)descriptionTextViewtextView의 placeholder 기능 구현optionsTableView
Feedstruct Feed: Codable {
let id: String
let user: User
let location: String
let imageURLString: [String]
let likeUser: [User]
let description: String
let createDate: Date
var imageURL: [URL?] {
imageURLString.map { URL(string: $0) }
}
var date: String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "M월 d일"
dateFormatter.locale = Locale(identifier: "ko_KR")
return dateFormatter.string(from: createDate)
}
}
Userstruct User: Codable, Equatable {
static func == (lhs: User, rhs: User) -> Bool {
lhs.id == rhs.id
}
let id: String
let name: String
let nickName: String
let profileImageURLString: String
let feed: [String]
let follower: [String]
let following: [String]
let like: [String]
var profileImageURL: URL? { URL(string: profileImageURLString) }
}