首頁 >後端開發 >php教程 >iOS開發百問(11)

iOS開發百問(11)

黄舟
黄舟原創
2017-01-20 09:54:111335瀏覽

131、如何限制ScrollView在某個方向上不可滾動?
例如,要限制x方向上不可滾動,可以實現UIScrollViewDelegate協議方法:

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

132、如何在Swift Framework目標中導入O-C框架
以BmobSDK 為例(CommonCrypto框架等C/O-C框架也是一樣的),當你將BmobSDK加入Link Binary With Libraries時,當你使用「importBmobSDK」語句時,出現錯誤:no such module
如果你試圖使用bridging headers導入BmobSDK,則會導致另一個錯誤。
這是由於Swift Framework不支援bridging headers檔。
解決這個問題,需要經過以下步驟:
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 module來使用。
2) 在Build Settings中,找到Import Paths(SWIFT_INCLUDE_PATHS),增加BmobSDK目錄。如下圖所示:

3)在swift檔案中匯入BmobSDK框架:
import BmobSDK

133、如何在App Extension中使用CocoaPods
在Podfile中加入此句:
link_with 副的名字中加入此句文件,並設定Objective-C BridgingHeader。
134、錯誤'xxx.pch' has been modified since the precompiled header was builterror in Xcode
執行深度Clean(快捷鍵Option+Command+Shift+K)

135、Document Provider+Command+Shift+K)

135、Document ProviderViewer,DocumentSt. nil。
確認容器App,Document Provider擴充功能和File Provider擴充的App Groups設定正確,如果有任何驚嘆號,請Fixed。
136、插入和刪除CollectionView中的Cell
跟TableView一樣,我們可以用insertItemsAtIndexPaths()/deleteItemsAtIndexPaths()插入/刪除單元格。不同的是CollecionView不再支援beginUpdates()/endUpdates()操作。預設已支援插入/刪除動畫,如果不想要預設動畫效果,可以設定UIView的animationsEnabled屬性:

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

137、UIScrollView中的UICollectionView不會滾動
檢查UIScrollView是否被設定了delegate屬性,同時檢查在delegate中是否實作了scrollViewDidScroll方法。如果是,請刪除該方法(僅取消delegate屬性是不行的)。
同時檢查UICollectionView的寬度(或寬度約束)、高度(或高度約束),以及清單內容大小,因為當清單內容小於UICollectionView的寬(或高)時,該方向的捲軸不會出現。
138、儲存格使用UITableViewCellStyleValue1,為什麼顯示不正確?
UITableViewCell 有幾個內建的類型,例如UITableViewCellStyleDefault、UITableViewCellStyleValue1、UITableViewCellStyleValue2。
這些Cell都是SDK預先配置的,它們呈現固定的內建樣式,例如字體大小、顏色、對齊方式等。如果你在想修改這些配置,很可能顯示不正常,例如有的文字一下子能顯示,一下子又不顯示,或者一下子顯示固有字體(及顏色),一下子(比如說點擊單元格)又顯示修改後的字體(及顏色)。
在這種情況下,你最好自訂自己的單元格(子類化)。
139、boundingRectWithSize 計算出的尺寸不正確?
注意提供正確的options參數。對於UILabel,至少需要使用UsesLineFragmentOrigin和UsesFontLeading兩個選項:

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

140、Swift中無法對多個枚舉值進行按位或(|)運算
注意,這個問題在iOS 8.3 SDK Beta 11 (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