>  기사  >  백엔드 개발  >  iOS 개발 질문 (11)

iOS 개발 질문 (11)

黄舟
黄舟원래의
2017-01-20 09:54:111297검색

131. ScrollView가 특정 방향으로 스크롤되지 않도록 제한하는 방법은 무엇입니까?
예를 들어 x 방향 스크롤을 제한하려면 UIScrollViewDelegate 프로토콜 메서드를 구현할 수 있습니다.

func scrollViewDidScroll(scrollView: UIScrollView) {
ifabs(scrollView.contentOffset.x) > 0 {
scrollView.contentOffset= CGPointMake(0, scrollView.contentOffset.y)
}
}

132 O-C 프레임워크를 Swift 프레임워크 대상으로 가져오는 방법
BmobSDK 가져오기 예를 들어(CommonCrypto 등. C/O-C 프레임워크의 경우에도 마찬가지입니다), Link Binary With Libraries에 BmobSDK를 추가하면 "importBmobSDK" 문을 사용할 때 오류가 발생합니다. 해당 모듈이 없습니다
브리징 헤더를 사용하여 BmobSDK를 가져오려고 하면 또 다른 오류가 발생합니다.
Swift Framework가 브리징 헤더 파일을 지원하지 않기 때문입니다.
이 문제를 해결하려면 다음 단계를 거쳐야 합니다.
1) 프로젝트 디렉토리에 BmobSDK 디렉토리를 생성하고 이 디렉토리에 BmobSDK.framework를 배치합니다. 동시에 이 디렉토리에 다음 내용을 포함하는 module.map 파일을 생성합니다:

module BmobSDK [system] {
header"/Users/kmyhy/Documents/Swift/code/第12章/kNote/BmobSDK/BmobSDK.framework/Headers/Bmob.h"
link "BmobSDK"
export *
}

이를 통해 BmobSDK를 Swift 모듈로 사용할 수 있습니다.
2) 빌드 설정에서 가져오기 경로(SWIFT_INCLUDE_PATHS)를 찾아 BmobSDK 디렉터리를 추가합니다. 아래 그림과 같이:

3) Swift 파일에서 BmobSDK 프레임워크를 가져옵니다.
import BmobSDK

133. App Extension에서 CocoaPods를 사용하는 방법
다음 문장을 추가합니다. Podfile에서:
link_with 'extension name'
브리징 헤더 파일을 추가하고 Objective-C BridgingHeader를 설정합니다.
134. Xcode에서 미리 컴파일된 헤더가 빌드된 이후 'xxx.pch' 오류가 수정되었습니다. DocumentPickerViewController의 documentStorageURL 속성이 nil을 반환합니다.
컨테이너 앱의 앱 그룹, 문서 제공자 확장자, 파일 제공자 확장자가 올바르게 설정되어 있는지 확인하고, 느낌표가 있으면 수정해 주세요.
136. CollectionView에 셀 삽입 및 삭제
TableView와 마찬가지로 insertItemsAtIndexPaths()/deleteItemsAtIndexPaths()를 사용하여 셀을 삽입/삭제할 수 있습니다. 차이점은 CollectionView가 더 이상 startUpdates()/endUpdates() 작업을 지원하지 않는다는 것입니다. 삽입/삭제 애니메이션은 기본적으로 지원됩니다. 기본 애니메이션 효과를 원하지 않으면 UIView의 animationsEnabled 속성을 설정할 수 있습니다.

BOOL animationsEnabled = [UIView areAnimationsEnabled];
[UIView setAnimationsEnabled:NO];
[myCollectionView reloadItemsAtIndexPaths:myIndexPaths];
[UIView setAnimationsEnabled:animationsEnabled];

137 UIScrollView의 UICollectionView는 스크롤되지 않습니다. UIScrollView에 델리게이트 속성이 설정되어 있는지 확인하고, 델리게이트에 scrollViewDidScroll 메서드가 구현되어 있는지 확인하세요. 그렇다면 메서드를 삭제하세요. (대리자 속성을 취소하는 것만으로는 작동하지 않습니다.)
또한 UICollectionView의 너비(또는 너비 제약), 높이(또는 높이 제약) 및 목록 콘텐츠 크기를 확인하세요. 목록 콘텐츠가 UICollectionView의 너비(또는 높이)보다 작으면 이 방향의 스크롤 막대가 나타나지 않습니다.

138. UITableViewCellStyleValue1을 사용할 때 셀이 잘못 표시되는 이유는 무엇입니까?

UITableViewCell에는 UITableViewCellStyleDefault, UITableViewCellStyleValue1 및 UITableViewCellStyleValue2와 같은 여러 가지 기본 제공 유형이 있습니다.
이러한 셀은 SDK에 의해 사전 구성되며 글꼴 크기, 색상, 정렬 등과 ​​같은 고정된 내장 스타일을 제공합니다. 이러한 구성을 수정하려는 경우 디스플레이가 정상적이지 않을 가능성이 높습니다. 예를 들어 일부 텍스트가 잠시 표시되었다가 잠시 표시되지 않거나 고유의 글꼴(및 색상)이 잠시 표시되는 경우가 있습니다. 을 클릭한 다음(예: 셀 클릭) 수정된 글꼴(및 색상)이 다시 표시됩니다.
이 경우 자신만의 셀을 사용자 정의하는 것이 더 좋습니다(하위 클래스화).
139.boundingRectWithSize로 계산된 크기가 잘못되었습니다.
올바른 옵션 매개변수를 제공하도록 주의하세요. UILabel의 경우 UsesLineFragmentOrigin 및 UsesFontLeading:

CGRect paragraphRect =
[attributedTextboundingRectWithSize:CGSizeMake(300.f, CGFLOAT_MAX)
options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading)
context:nil];

140이라는 두 가지 이상의 옵션을 사용해야 합니다. Swift에서는 비트별 OR(|) 작업을 수행할 수 없습니다.
이 문제는 iOS 8.3 SDK 베타 1(12F5027d)에서 해결되었습니다. 이 버전보다 낮은 SDK의 경우 다음 코드를 대신 사용할 수 있습니다.

let options =unsafeBitCast(NSStringDrawingOptions.UsesLineFragmentOrigin.rawValue |
NSStringDrawingOptions.UsesFontLeading.rawValue,
NSStringDrawingOptions.self)
let frame = text.boundingRectWithSize(size, options:options, attributes:D,context:nil)

위는 iOS 개발 질문(11)의 내용입니다. 더 많은 관련 내용을 보려면 PHP 중국어를 참고하세요. 웹사이트(www.php.cn)!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:iOS 개발 질문 (9)다음 기사:iOS 개발 질문 (9)