ホームページ  >  記事  >  バックエンド開発  >  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. Swift Framework ターゲットに O-C フレームワークをインポートする方法
BmobSDK を例に挙げます (C にも同じことが当てはまります) CommonCrypto などの /O-C フレームワーク)、BmobSDK をライブラリとバイナリのリンクに追加するときに、「importBmobSDK」ステートメントを使用すると、エラーが表示されます: no such module
ブリッジング ヘッダーを使用して 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) BmobSDK フレームワークを Swift ファイルにインポートします:
import BmobSDK

133。App Extension で CocoaPods を使用する方法
次の文を Podfile に追加します:
link_with 'name of extension'
bri headerdging ファイルを追加し、Objective-C BridgingHeader を設定します。
134. プリコンパイルされたヘッダーが nil でビルドされたため、エラー「xxx.pch」が変更されました。
コンテナアプリのアプリグループ、ドキュメントプロバイダー拡張子、ファイルプロバイダー拡張子が正しく設定されていることを確認し、感嘆符がある場合は修正してください。
136. CollectionView でのセルの挿入と削除
TableView と同様に、insertItemsAtIndexPaths()/deleteItemsAtIndexPaths() を使用してセルを挿入/削除できます。違いは、CollectionView が beginUpdates()/endUpdates() 操作をサポートしなくなったことです。デフォルトで挿入/削除アニメーションがサポートされている場合は、UIView のanimationsEnabled 属性を設定できます:

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

UIScrollView の UICollectionView はスクロールしません
UIScrollView の delegate 属性を確認してください。が設定されており、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 の少なくとも 2 つのオプションを使用する必要があります。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 中国語 Web サイト (www.php.ん)!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。