開発中に発生した問題と解決方法
5037 ワード
1.appの起動に関するいくつかの問題アプリの起動時に、時間のかかる操作があると、黒い画面が点滅します.チェック可能:1.LaunchImageが正しいかどうか2.plistファイルの読み書きに時間がかかる -(BOOL)アプリケーション:(UIApplication*)アプリケーションdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions{}widgetを使用してappを起動するとlaunchOptionsにデータが存在し、保存システムによってプッシュされたkey:k y y y y y y y y m N o t i f i f icationUserDefaulutskeyによってappが起動し潰れ、この場合launchOptions=nil; iOSプログラム起動時にアプリケーションが呼び出されます.2番目のパラメータlaunchOptionsはNSDictionaryタイプのオブジェクトで、このプログラム起動の理由が格納されています.LaunchOptionsの可能なキー値はUIApplication Class ReferenceのLaunch Options Keysセクションを参照してください.
2.tableViewネストの問題 cellにtableViewをネストする場合、cell frameがサブtableViewのfrmaeより小さいと、tableViewクリック領域が に応答できなくなる.複数のviewがネストされている場合、ジェスチャー競合の問題が発生します.この場合、ジェスチャーエージェント:UIGestureRecognizerDelegateを書き換えて、ジェスチャーに応答する必要があるview を識別する必要があります.
3.iOS 11で発生した問題と解決方法に適合 UIscrollViewとそのサブクラス(UItableView)の適合iOS 11の前に、VCで設定:
次の設定が必要です.
4.アルバム権限の取得 iOS 11では、アップルがアルバムの権限keyを調整し、元のNSPhoto LibraryUsageDescriptionをiOS 11以降、NSPhoto LibraryAddUsageDescription に変更しました.
5.ナビゲーションバー
iOS 11はナビゲーションバーを大きく変更しました.は、ナビゲーションバーUIBarButtonItemを設定するために、以前は次の方法を使用していました.iOS 11に着きました.UIBarButtonItemはTint Colorでレンダリングされ、元の色が消去されます.解決方法:UIImageのレンダリングモードであるUIImageを設定する.renderingModeはU I I I m a g e R e nderingModeAlwaysOriginalです.Tint Colorを使用せずに画像の元の状態を常に描画します.
InitWithCustomViewの方法では、上記の影響を受けません.は2を表し、iOS 11のinitWithCustomViewの方法でナビゲーションバーにボタンを設定し、画像に@3 x接尾辞を付けないと、画像は元のサイズを超えて大きく表示されます.解決策は画像に@3 xを加えることです.
6、iOS 10がネットワークに接続できない問題
iOS 10システムでは、Appがどうしてもインターネットに接続できない場合があります.この場合、私たちのAppはユーザーにネットワーク要求を許可するかどうかを発行していないため、以下の操作に従ってAppにネットワーク要求を許可するかどうかをポップアップさせることができます.
設定-無線LANまたはセルラーモバイルネットワーク-無線LANとセルラーモバイルの移動を使用して任意のAppの権限を変更して元のオプションを復元し、操作が完了した後に関連する問題のアプリケーションを開き、ネットワークの選択をポップアップし、確認すればよい
7、一部のiOSデバイスはカレンダーのアラートを設定する時、追加に失敗した
テストを始めた同僚からのフィードバックはiOS 10です.3.2の问题は、后で缲り返しチェックして、コードの问题ではないことを确认して、设备自身が注意を设置してicloudで开く(あるいはかつて开いたことがある)[画像のアップロードの中で...(カレンダーを开く注意)]It works now!
2.1、 ,lauchOptions ;
2.2、 openURL: , UIApplicationLaunchOptionsURLKey URL(NSURL),UIApplicationLaunchOptionsSourceApplicationKey bundle ID (NSString);
2.3、 , UIApplicationLaunchOptionsLocalNotificationKey (UILocalNotification);
2.4、 , UIApplicationLaunchOptionsRemoteNotificationKey userInfo(NSDictionary);
2.5、 key UIApplicationLaunchOptionsAnnotationKey,UIApplicationLaunchOptionsLocationKey, UIApplicationLaunchOptionsNewsstandDownloadsKey。
2.tableViewネストの問題
- (Bool)GestureRecognizer:(UIGestureRecognizer *)gestureRecoginzer shouldReceiveTouch:(UITouch *)touch {
if([touch.view isKindOfClass:[UILabel class]] ){
return YES;
} else {
return NO;
}
}
3.iOS 11で発生した問題と解決方法に適合
automaticallyAdjustsScrollViewInsets = YES;
scrollViewは対応する内側余白を自動的に設定し、tableHeaderViewがある場合はナビゲーションバーとの適合に問題はありません.iOS 11以降、システムはデフォルトでself-sizingを開き、TableHeaderViewの背景図を20ピクセル下に移動してナビゲーションバーの下に移動し、appleドキュメント解析:Self-Sizing by Default
NEW
Link on iOS 11, all estimated heights default to UITableViewAutomaticDimension Headers, footers, and cells use self-sizing by default
iOS only—behavior is not changed on tvOS
Ensure all views have sufficient internal constraints
Return fixed sizes from delegate methods
次の設定が必要です.
tableView.estimatedRowHeight = 0;
tableView.estimatedSectionHeaderHeight = 0 ;
tableView.estimatedSectionFooterHeight = 0;
if (systemVersion >= 11) {
self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
self.automaticallyAdjustsScrollViewInsets = NO;
}
4.アルバム権限の取得
NSPhotoLibraryAddUsageDescription //iOS 11
App ,
NSPhotoLibraryUsageDescription
App , //
5.ナビゲーションバー
iOS 11はナビゲーションバーを大きく変更しました.
// ,iOS11
- (void)setNavigationBarBackButtonItem:(NSString *)image {
UIImage *backImage = [UIImage imageNamed:image];
UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithImage:backImage style:UIBarButtonItemStylePlain target:self action:@selector(popViewControllerAnimated)];
backItem.tintColor = [UIColor colorWithPatternImage:backImage];
backItem.title = @"";
self.navigationItem.leftBarButtonItem = backItem;
}
InitWithCustomViewの方法では、上記の影響を受けません.
_leftBtn = [[UIButton alloc] ];
[_leftBtn setImage:image forState:UIControlStateNormal];
_leftBtn.backgroundColor = [UIColor cyanColor];
_leftBtn.imageView.contentMode = UIViewContentModeScaleAspectFit;
_leftBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
[_leftBtn addTarget:self action:@selector(leftBtnClicked) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:_leftBtn];
self.navigationItem.leftBarButtonItem = leftBarButtonItem;
6、iOS 10がネットワークに接続できない問題
iOS 10システムでは、Appがどうしてもインターネットに接続できない場合があります.この場合、私たちのAppはユーザーにネットワーク要求を許可するかどうかを発行していないため、以下の操作に従ってAppにネットワーク要求を許可するかどうかをポップアップさせることができます.
設定-無線LANまたはセルラーモバイルネットワーク-無線LANとセルラーモバイルの移動を使用して任意のAppの権限を変更して元のオプションを復元し、操作が完了した後に関連する問題のアプリケーションを開き、ネットワークの選択をポップアップし、確認すればよい
7、一部のiOSデバイスはカレンダーのアラートを設定する時、追加に失敗した
テストを始めた同僚からのフィードバックはiOS 10です.3.2の问题は、后で缲り返しチェックして、コードの问题ではないことを确认して、设备自身が注意を设置してicloudで开く(あるいはかつて开いたことがある)[画像のアップロードの中で...(カレンダーを开く注意)]It works now!