'ios'에 해당되는 글 5건
- 2015.11.04 :: core data delete rule 정리
- 2015.08.05 :: 왜 컬렉션 뷰 셀이 나오지 않는거야?
- 2015.07.23 :: 키보드 이벤트 대응 입력창 만들기.
- 2015.06.10 :: [링크] ios 에서 circle imageview 및 rounded imageview 만들기
- 2015.06.09 :: [링크] ios 이미지 캐시 라이브러리 밴치마크
오늘 알아보려고 하는건 맨날 까먹는 coredata delete rule이다.
위 같은 코어데이터 모델이 있을때
parent는 Toot이라는 모델을 가지고 있으며 이름은 children이다.
parent가 지워지면 children들은 자동으로 삭제해야한다.
그럼 deleteRule은 Cascade
마찬가지로 children은 Toot이라는 모델을 가지고 있으며 그 이름은 parent다.
children이 지워지면 parent는 해당 Toot을 가지고 있으면 안된다.
그래서 Nullify
쉽게 외우려면 위에 Name을 주체로 외우면 쉽다.
parent를 예로 들면
parent는 Toot이라는 모델로 향하고, 그 이름은 children이며 parent가 지워졌을때 children은 삭제된다. 그리고 parent는 여러개의 Toot을 가진다.
'iOS' 카테고리의 다른 글
왜 컬렉션 뷰 셀이 나오지 않는거야? (0) | 2015.08.05 |
---|---|
키보드 이벤트 대응 입력창 만들기. (0) | 2015.07.23 |
[링크] ios 에서 circle imageview 및 rounded imageview 만들기 (0) | 2015.06.10 |
[링크] ios 이미지 캐시 라이브러리 밴치마크 (0) | 2015.06.09 |
ios는 가로 스크롤 테이블 뷰를 기본으로 제공해주지 않는다.
코코아포드에 라이브러리가 있긴 한데 아직까진 쓰기도 불편하고 커스텀을 마음대로 할수가 없어서 나는 UICollectionView 에 UICollectionViewFlowLayout을 달아서 쓴다.
그런데 가끔 UICollectionViewCell이 안 보이는 경우가 생긴다.
collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
이 메소드 자체가 호출이 안될때가 있는데 이는 UICollectionView크기가 Cell 크기보다 작을 경우다.
하지만 이걸 소스나 인터페이스 빌더를 보면서 찾기가 매우 힘들어서 크게 확인해야 할것 두가지를 정리해 보려 한다.
1. collectionViewFlowLayout.scrollDirection = UICollectionViewScrollDirection.Horizontal 이 안먹어요!
이 경우는 대부분 스크롤뷰 인셋 문제다.
스토리보드에 보면 ViewController -> Layout -> Adjust Scroll View Insets이 있는데 이는 스크롤뷰가 StatusBar 혹은 NavigationBar 와 겹칠 경우 자동으로 위에 공간을 벌리는 옵션이다.
이 옵션이 활성화가 되어있으면 CollectionView는 자동으로 위에 공간을 띄워 세로 스크롤이 생기며 그 공간때문에 Cell을 표시할 자리가 없어지고
collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
의 호출을 막는다.
만약 collectionViewFlowLayout.scrollDirection = UICollectionViewScrollDirection.Vertical을 설정하고 스크롤 했는데 Cell이 보인다면 무조건 이문제.
해결방법은 Adjust Scroll View Insets을 비활성화 시키면 된다.
해결이 안된다면 해당 ViewController가 TabbarController나 NavigationController에 포함이 되어있는지 확인하고, 해당 TabbarController나 NavigationController에서도 Adjust Scroll View Insets을 비활성화 시키면 된다.
인코드로 하려면 self.automaticallyAdjustsScrollViewInsets = false
2. 그래도 안보여요!
그렇다면 Cell 크기가 CollectionView보다 크게 잡혀있는 부분이 없는지 확인해보자.
CollectionView의 초기 셀크기 설정값은 50*50 이다.
아이템 사이즈는 collectionViewFlowLayout.itemSize 이나
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
을 통해서 설정할 수 있다.
'iOS' 카테고리의 다른 글
core data delete rule 정리 (0) | 2015.11.04 |
---|---|
키보드 이벤트 대응 입력창 만들기. (0) | 2015.07.23 |
[링크] ios 에서 circle imageview 및 rounded imageview 만들기 (0) | 2015.06.10 |
[링크] ios 이미지 캐시 라이브러리 밴치마크 (0) | 2015.06.09 |
ios를 개발하면서 가장 불편했던 것중 하나를 꼽으라면 키보드다.
안드로이드는 manifest에서 activity마다 키보드가 올라올때 화면 설정을 바꿀수 있지만 ios는 그런게 없다.
그래서 viewController에서 notification을 받아서 그에 대응하는 동작을 해줘야 한다.
구글링 해서 한참 삽질을 했는데 구현하면서 큰 문제는 autolayout이었다.
키보드가 올라올때 새로운 뷰를 생성하는거면 문제가 없는데 채팅화면에 있는 채팅 입력 뷰 (키보드가 없어도 화면에 표시되야 하는 뷰) 가 있을 경우 보통 화면 최하단에 위치하고 autolayout으로 bottom layout을 주게 된다.
맨 처음에는 code에서 setTranslatesAutoresizingMaskIntoConstraints(false) 를 통해서 autolayout을 풀고 했었는데 다른 화면으로 넘어갔다 올 때 (사진 선택하는 화면이나 카메라 등등) 화면이 깨지는 현상이 나타났다.
그래서 그 방법을 안쓰고 storyboard 에서 constraint를 아울렛으로 불러와 constant를 변경하는 방식으로 바꿨더니 해결됬다.
작업 순서
1. keyboard notification 등록과 해제
2. inputView - bottomLayout constraint 아울렛 가져오기
3. keyboard animation에 맞춰 inputView animation 설정
1. keyboard notification 등록과 해제
UIKeyboardWillShowNotification 과 UIKeyboardHideNotification을 NotificationCenter에 등록한다.
해당 notification을 받으면 keyboardWillAnimate(notification:NSNotificaion) 메소드를 실행한다.
2. inputView - bottomLayout constraint 아울렛 가져오기
일반적인 뷰 아울렛을 가져오듯 constraint도 가져올 수 있다.
3. keyboard animation에 맞춰 inputView animation설정
1. 에서 설정한 selector를 구현한다.
duration과 curve를 같게 줘야 자연스럽게 뷰가 움직인다.
'iOS' 카테고리의 다른 글
core data delete rule 정리 (0) | 2015.11.04 |
---|---|
왜 컬렉션 뷰 셀이 나오지 않는거야? (0) | 2015.08.05 |
[링크] ios 에서 circle imageview 및 rounded imageview 만들기 (0) | 2015.06.10 |
[링크] ios 이미지 캐시 라이브러리 밴치마크 (0) | 2015.06.09 |
http://www.appcoda.com/ios-programming-circular-image-calayer/
view.layer.cornerRadius = 5
view.layer.masksToBounds = true
모서리를 5만큼 둥글게 하고 밖에 부분을 투명하게 만든다.
'iOS' 카테고리의 다른 글
core data delete rule 정리 (0) | 2015.11.04 |
---|---|
왜 컬렉션 뷰 셀이 나오지 않는거야? (0) | 2015.08.05 |
키보드 이벤트 대응 입력창 만들기. (0) | 2015.07.23 |
[링크] ios 이미지 캐시 라이브러리 밴치마크 (0) | 2015.06.09 |
https://bpoplauschi.wordpress.com/2014/03/21/ios-image-caching-sdwebimage-vs-fastimage/
'iOS' 카테고리의 다른 글
core data delete rule 정리 (0) | 2015.11.04 |
---|---|
왜 컬렉션 뷰 셀이 나오지 않는거야? (0) | 2015.08.05 |
키보드 이벤트 대응 입력창 만들기. (0) | 2015.07.23 |
[링크] ios 에서 circle imageview 및 rounded imageview 만들기 (0) | 2015.06.10 |