0

UIDatePickerのようなデフォルトのiOSコントロールのサブビューを変更することはできますか?私のアプリにはミニマリスト/フラットUIがあり、デフォルトの日付ピッカーはそのスタイルと一致しません。それを変更するために私が見つけることができた唯一の方法は、そのサブビューを反復処理し、影などを追加するものを非表示にすることでした。

UIView *background = (UIView *)[[self pickerViews].subviews objectAtIndex:0];
background.hidden = YES;

これは許可されますか、それともアプリが拒否されますか?私は実際にはコントロールやその機能をいじっているのではなく、見た目だけです。

4

3 に答える 3

2

すぐに拒否されない場合もありますが、将来、コントロールのサブビューが変更されると、予期しない動作が発生する可能性があります。独自のカスタムコントロールを作成するか、パブリックAPIで目的の外観に近づける方法を見つけることをお勧めします。

于 2013-02-21T00:55:33.083 に答える
1

これは実際には「プライベートAPI」ではなく、SDKに完全に文書化されています。ただし、文書化されていない動作(つまり、サブビュー0が非表示にしたい動作)に依存しているため、注意する必要があります。

コードには2つの潜在的な問題があります。

  • 順序が変更された場合、間違ったビューが非表示になります(ビュークラスのチェックは、これをある程度防ぐために一般的に使用されます)
  • ピッカーにサブビューがない場合はクラッシュします(これは発生する可能性が低いようです。たとえば、インデックス6のビューにアクセスする場合はさらに問題になります)。

あなたがする必要がある2つの追加の事柄もあります:

  • 将来のOSリリースで壊れやすいことを行ったことのリストを保管してください。
  • iOSベータ版でも機能することを確認し、早めに実行してください。
于 2013-02-21T05:04:08.807 に答える
0

APIを介して公開されていないものを変更することはお勧めしません。将来、アップルはその特定のインデックスでサブビューを削除する可能性があります。この種のアプローチは避けたほうがよいでしょう。UIまたは実装の観点から他のオプションを探してみてください。

于 2013-02-21T01:08:14.100 に答える