在ios7中,當您單擊標籤欄上的某個按鈕時,會出現一個窗口,其中包含導航欄右側的一些完成按鈕的項目。下圖顯示了這個窗口在ios7的地圖上的應用。ios7中的信息窗口iphone
這是一個新的組件,如動作表或只是一個自定義視圖?我想創建一個這樣的頁面,最好的方法是什麼?
在ios7中,當您單擊標籤欄上的某個按鈕時,會出現一個窗口,其中包含導航欄右側的一些完成按鈕的項目。下圖顯示了這個窗口在ios7的地圖上的應用。ios7中的信息窗口iphone
這是一個新的組件,如動作表或只是一個自定義視圖?我想創建一個這樣的頁面,最好的方法是什麼?
由於地圖應用程序在模擬器中可用,因此可以使用調試器附加到地圖應用程序並將消息發送到其對象。
這裏的關鍵窗口的遞歸描述的打印:
<UIWindow: 0x10ab27890; frame = (0 0; 320 568); autoresize = W+H; gestureRecognizers = <NSArray: 0x10ab280a0>; layer = <UIWindowLayer: 0x10ab26ba0>>
| <UILayoutContainerView: 0x10af73b20; frame = (0 0; 320 568); autoresize = W+H; gestureRecognizers = <NSArray: 0x10af7d1b0>; layer = <CALayer: 0x10af74420>>
| | <UINavigationTransitionView: 0x10af75700; frame = (0 0; 320 568); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x10af08c20>>
| | | <UIViewControllerWrapperView: 0x111aaea00; frame = (0 0; 320 568); layer = <CALayer: 0x10abb2990>>
| | | | <UIView: 0x10af7e3d0; frame = (0 0; 320 568); clipsToBounds = YES; layer = <CALayer: 0x10af7e690>>
| | | | | <UIView: 0x10af7e6b0; frame = (0 0; 320 568); gestureRecognizers = <NSArray: 0x10ab47cb0>; layer = <CALayer: 0x10af7e770>>
| | | | | | <MKMapView: 0x10af7eca0; frame = (0 0; 320 568); clipsToBounds = YES; userInteractionEnabled = NO; gestureRecognizers = <NSArray: 0x10abfb9f0>; layer = <CALayer: 0x10af7e940>>
| | | | | | | <UIView: 0x10af809e0; frame = (0 0; 320 568); autoresizesSubviews = NO; gestureRecognizers = <NSArray: 0x10ab4a980>; layer = <CALayer: 0x10af80aa0>>
| | | | | | | | <MKBasicMapView: 0x10af80fb0; frame = (0 0; 320 568); clipsToBounds = YES; layer = <CALayer: 0x10af81150>>
| | | | | | | | | <_MKMapLayerHostingView: 0x10af81ca0; frame = (0 0; 320 568); layer = <_MKMapLayerHostingLayer: 0x10af81fd0>>
| | | | | | | | | | <VKMapView: 0x10af82a30> (layer)
| | | | | | | | | | | <VKMapCanvas: 0x10af9ca60> (layer)
| | | | | | | | | | | | <VGLLayer: 0x10c90ed40> (layer)
| | | | | | | | <MKScrollContainerView: 0x111ab4a30; frame = (-1.3491e+06 -3.25471e+06; 8.38861e+06 8.38861e+06); autoresizesSubviews = NO; layer = <CALayer: 0x10aba9420>>
| | | | | | | | <MKNewAnnotationContainerView: 0x111ab4ff0; frame = (0 0; 320 568); autoresize = W+H; autoresizesSubviews = NO; layer = <CALayer: 0x10ab7d3b0>>
| | | | | | | | | <UserLocationView: 0x10c981e70; frame = (138.651 271.783; 42 44); layer = <CALayer: 0x10c9f2a30>>
| | | | | | | | | | <CALayer: 0x10c97e250> (layer)
| | | | | | | | | | <CALayer: 0x10c981e00> (layer)
| | | | | | | | | | <CALayer: 0x10c9bfd60> (layer)
| | | | | | | | | | | <CALayer: 0x10c984cc0> (layer)
| | | | | | <BlurView: 0x111ab0cd0; frame = (0 0; 320 64); layer = <CALayer: 0x111ab0db0>>
| | | | | | | <_UIBackdropView: 0x111ab4c40; frame = (0 0; 320 64); opaque = NO; autoresize = W+H; layer = <_UIBackdropViewLayer: 0x10ab61940>>
| | | | | | | | <_UIBackdropEffectView: 0x10ab32bc0; frame = (0 0; 320 64); clipsToBounds = YES; opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CABackdropLayer: 0x111a07ee0>>
| | | | | | | | <UIView: 0x111abbb40; frame = (0 0; 320 64); hidden = YES; opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x10ab5ad20>>
| | | | | | | <UIView: 0x111abc960; frame = (0 64; 320 0.5); tag = 11; layer = <CALayer: 0x10ab54110>>
| | | | | | <FloatingControlsView: 0x111abcbb0; frame = (0 524; 320 44); opaque = NO; layer = <CALayer: 0x111a04910>>
| | | | | | | <BlurView: 0x111abd0a0; frame = (0 0; 320 44); autoresize = W+H; layer = <CALayer: 0x10ab506c0>>
| | | | | | | | <_UIBackdropView: 0x111abd280; frame = (0 0; 320 44); opaque = NO; autoresize = W+H; layer = <_UIBackdropViewLayer: 0x111a02e50>>
| | | | | | | | | <_UIBackdropEffectView: 0x111abd730; frame = (0 0; 320 44); clipsToBounds = YES; opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CABackdropLayer: 0x111a02560>>
| | | | | | | | | <UIView: 0x111abd900; frame = (0 0; 320 44); hidden = YES; opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x10ab4ea30>>
| | | | | | | | <MapsUserTrackingButton: 0x111abee30; baseClass = UIButton; frame = (5 4; 36 36); opaque = NO; tag = 1; layer = <CALayer: 0x10abf7710>>
| | | | | | | | | <UIImageView: 0x121201640; frame = (0 0; 36 36); alpha = 0.1; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x121200b90>>
| | | | | | | | | <UIImageView: 0x111abf970; frame = (5.5 8; 22.5 22.5); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x10abf26d0>>
| | | | | | | | <UIButton: 0x111ac3f70; frame = (142 4; 36 36); opaque = NO; tag = 5; layer = <CALayer: 0x10abdf330>>
| | | | | | | | | <UIImageView: 0x111ad69e0; frame = (8.5 4.5; 19 26.5); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x10ab5e130>>
| | | | | | | | <UIButton: 0x111ac56f0; frame = (279 4; 36 36); opaque = NO; tag = 6; layer = <CALayer: 0x10abda8c0>>
| | | | | | | | | <UIImageView: 0x111ad72e0; frame = (5.5 5.5; 25 25); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x10ab5bf40>>
| | | | | | | <UIView: 0x111abdbb0; frame = (0 -0.5; 320 0.5); layer = <CALayer: 0x111a147f0>>
| | | | | | <UINavigationBar: 0x114b06b80; frame = (0 20; 320 44); opaque = NO; autoresize = W; gestureRecognizers = <NSArray: 0x114b07530>; layer = <CALayer: 0x114b06cf0>>
| | | | | | | <_UINavigationBarBackground: 0x114b06e40; frame = (0 0; 320 44); opaque = NO; autoresize = W; userInteractionEnabled = NO; layer = <CALayer: 0x114b06fa0>>
| | | | | | | | <UIImageView: 0x114b06ff0; frame = (0 44; 320 0.5); userInteractionEnabled = NO; layer = <CALayer: 0x114b07110>>
| | | | | | | <UINavigationItemView: 0x10afc7ba0; frame = (139.5 8; 41.5 27); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x10afc7ca0>>
| | | | | | | | <UILabel: 0x10afc7cc0; frame = (0 4; 41.5 21); text = 'Maps'; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x10afc7e00>>
| | | | | | | <UINavigationButton: 0x114b610a0; frame = (270 8; 42 30); opaque = NO; layer = <CALayer: 0x114b61320>>
| | | | | | | | <UIButtonLabel: 0x114b34180; frame = (0 4; 42 21); text = 'Done'; clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x114b342d0>>
| | | | | | | <_UINavigationBarBackIndicatorView: 0x114b7efd0; frame = (8 12; 12.5 20.5); alpha = 0; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x114b30520>>
| | | | | <_UILayoutGuide: 0x111abafa0; frame = (0 0; 0 20); hidden = YES; layer = <CALayer: 0x111a218f0>>
| | | | | <_UILayoutGuide: 0x111aaff20; frame = (0 568; 0 0); hidden = YES; layer = <CALayer: 0x10ab70a50>>
| | | | | <UIView: 0x1212b0530; frame = (0 64; 320 504); autoresize = W+H; layer = <CALayer: 0x1212b0180>>
| | | | | | <BlurView: 0x1212af380; frame = (0 231.5; 320 272.5); layer = <CALayer: 0x1212af460>>
| | | | | | | <_UIBackdropView: 0x1212af480; frame = (0 0; 320 272); opaque = NO; autoresize = W+H; layer = <_UIBackdropViewLayer: 0x1212af840>>
| | | | | | | | <_UIBackdropEffectView: 0x1212afb60; frame = (0 0; 320 272); clipsToBounds = YES; opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CABackdropLayer: 0x1212afc30>>
| | | | | | | | <UIView: 0x1212afc50; frame = (0 0; 320 272); hidden = YES; opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x1212afd10>>
| | | | | | <UITableView: 0x10f1ce000; frame = (0 231.5; 320 272.5); clipsToBounds = YES; opaque = NO; autoresize = W+H; gestureRecognizers = <NSArray: 0x12122c920>; layer = <CALayer: 0x10c8ed850>; contentOffset: {0, 0}>
| | | | | | | <UITableViewWrapperView: 0x12127c430; frame = (0 0; 320 272); autoresize = W+H; layer = <CALayer: 0x10c8aebb0>>
| | | | | | | | <UITableViewCell: 0x10aff4d40; frame = (0 222.5; 320 50); text = 'Data from , others '; clipsToBounds = YES; opaque = NO; autoresize = W; layer = <CALayer: 0x10aff5030>>
| | | | | | | | | <UITableViewCellScrollView: 0x10aff5050; frame = (0 0; 320 50); autoresize = W+H; gestureRecognizers = <NSArray: 0x10aff5470>; layer = <CALayer: 0x10aff5370>; contentOffset: {0, 0}>
| | | | | | | | | | <UITableViewCellContentView: 0x10aff5760; frame = (0 0; 320 49.5); opaque = NO; gestureRecognizers = <NSArray: 0x10aff5a80>; layer = <CALayer: 0x10aff5820>>
| | | | | | | | | | | <UILabel: 0x114baaaa0; frame = (15 0; 290 49.5); text = 'Data from , others '; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x10aff5ae0>>
| | | | | | | | | | <_UITableViewCellSeparatorView: 0x114bab020; frame = (15 49.5; 290 0.5); layer = <CALayer: 0x114baae90>>
| | | | | | | | <UITableViewCell: 0x10aff3740; frame = (0 172.5; 320 50); text = 'Show Traffic'; clipsToBounds = YES; opaque = NO; autoresize = W; layer = <CALayer: 0x10aff3110>>
| | | | | | | | | <UITableViewCellScrollView: 0x10aff3a30; frame = (0 0; 320 50); autoresize = W+H; gestureRecognizers = <NSArray: 0x10aff3e30>; layer = <CALayer: 0x10aff3130>; contentOffset: {0, 0}>
| | | | | | | | | | <UITableViewCellContentView: 0x10aff4120; frame = (0 0; 320 49.5); opaque = NO; gestureRecognizers = <NSArray: 0x10aff4440>; layer = <CALayer: 0x10aff41e0>>
| | | | | | | | | | | <UILabel: 0x10aff44a0; frame = (15 0; 290 49.5); text = 'Show Traffic'; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x10aff45e0>>
| | | | | | | | | | <_UITableViewCellSeparatorView: 0x10aff49c0; frame = (15 49.5; 290 0.5); layer = <CALayer: 0x10aff48e0>>
| | | | | | | | <UITableViewCell: 0x10aff2120; frame = (0 115; 320 50); text = 'Report a Problem'; clipsToBounds = YES; opaque = NO; autoresize = W; layer = <CALayer: 0x10aff2410>>
| | | | | | | | | <UITableViewCellScrollView: 0x10aff2430; frame = (0 0; 320 50); autoresize = W+H; gestureRecognizers = <NSArray: 0x10aff2850>; layer = <CALayer: 0x10aff2750>; contentOffset: {0, 0}>
| | | | | | | | | | <UITableViewCellContentView: 0x10aff2b40; frame = (0 0; 320 49.5); opaque = NO; gestureRecognizers = <NSArray: 0x10aff2e60>; layer = <CALayer: 0x10aff2c00>>
| | | | | | | | | | | <UILabel: 0x10aff2ec0; frame = (15 0; 290 49.5); text = 'Report a Problem'; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x10aff3000>>
| | | | | | | | | | <_UITableViewCellSeparatorView: 0x10aff3380; frame = (0 49.5; 320 0.5); hidden = YES; layer = <CALayer: 0x10aff3450>>
| | | | | | | | <UITableViewCell: 0x10afd7d70; frame = (0 57.5; 320 50); text = 'Drop a Pin'; clipsToBounds = YES; opaque = NO; autoresize = W; layer = <CALayer: 0x114ba9a60>>
| | | | | | | | | <UITableViewCellScrollView: 0x10aff1d60; frame = (0 0; 320 50); autoresize = W+H; gestureRecognizers = <NSArray: 0x114b0b490>; layer = <CALayer: 0x114b0b790>; contentOffset: {0, 0}>
| | | | | | | | | | <UITableViewCellContentView: 0x10afd6390; frame = (0 0; 320 49.5); opaque = NO; gestureRecognizers = <NSArray: 0x114ba9640>; layer = <CALayer: 0x10afd4fb0>>
| | | | | | | | | | | <UILabel: 0x114b00d10; frame = (15 0; 290 49.5); text = 'Drop a Pin'; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x114b00e50>>
| | | | | | | | | | <_UITableViewCellSeparatorView: 0x10afd85c0; frame = (0 49.5; 320 0.5); hidden = YES; layer = <CALayer: 0x10afd58b0>>
| | | | | | | | <UITableViewCell: 0x114b3fa00; frame = (0 0; 320 50); clipsToBounds = YES; opaque = NO; autoresize = W; layer = <CALayer: 0x114b3ff30>>
| | | | | | | | | <UITableViewCellScrollView: 0x10afd5160; frame = (0 0; 320 50); autoresize = W+H; gestureRecognizers = <NSArray: 0x10afd5bc0>; layer = <CALayer: 0x10afd55c0>; contentOffset: {0, 0}>
| | | | | | | | | | <UITableViewCellContentView: 0x10afd62d0; frame = (0 0; 320 49.5); opaque = NO; gestureRecognizers = <NSArray: 0x10afd8200>; layer = <CALayer: 0x10afd6550>>
| | | | | | | | | | | <UISegmentedControl: 0x10afd8260; frame = (20 10; 280 29); opaque = NO; autoresize = LM+RM+TM+BM; layer = <CALayer: 0x10afd8540>>
| | | | | | | | | | | | <UISegment: 0x10afee6d0; frame = (187 0; 93 29); opaque = NO; layer = <CALayer: 0x10afee540>>
| | | | | | | | | | | | | <UISegmentLabel: 0x10afee850; frame = (22 5.5; 49 16); text = 'Satellite'; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x10afee520>>
| | | | | | | | | | | | | <UIImageView: 0x10afef570; frame = (93 0; 1 29); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; tag = -1030; layer = <CALayer: 0x10afef510>>
| | | | | | | | | | | | <UISegment: 0x10afed880; frame = (93 0; 93 29); opaque = NO; layer = <CALayer: 0x10afeccf0>>
| | | | | | | | | | | | | <UISegmentLabel: 0x10afedb00; frame = (26.5 5.5; 40 16); text = 'Hybrid'; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x10afeccd0>>
| | | | | | | | | | | | | <UIImageView: 0x10afee270; frame = (93 0; 1 29); opaque = NO; autoresize = LM; userInteractionEnabled = NO; tag = -1030; layer = <CALayer: 0x10afee210>>
| | | | | | | | | | | | <UISegment: 0x114b00ab0; frame = (0 0; 92 29); opaque = NO; layer = <CALayer: 0x10afb5380>>
| | | | | | | | | | | | | <UISegmentLabel: 0x114b0b7b0; frame = (18.5 5.5; 55 16); text = 'Standard'; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x114b6d6a0>>
| | | | | | | | | | | | | <UIImageView: 0x10afed530; frame = (92 0; 1 29); opaque = NO; autoresize = LM; userInteractionEnabled = NO; tag = -1030; layer = <CALayer: 0x114b342f0>>
| | | | | | | | | | <_UITableViewCellSeparatorView: 0x10aff1640; frame = (0 49.5; 320 0.5); hidden = YES; layer = <CALayer: 0x10aff1710>>
| | | | | | | <UIImageView: 0x10afd9470; frame = (0 269; 320 3); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x114b041d0>>
| | | | | | | <HeaderView: 0x114b134c0; frame = (0 50; 320 7.5); opaque = NO; autoresize = W; layer = <CALayer: 0x114bab510>>
| | | | | | | | <CALayer: 0x114bab530> (layer)
| | | | | | | | <CALayer: 0x114b13ab0> (layer)
| | | | | | | <HeaderView: 0x114b13ff0; frame = (0 107.5; 320 7.5); opaque = NO; autoresize = W; layer = <CALayer: 0x114b141b0>>
| | | | | | | | <CALayer: 0x114b141d0> (layer)
| | | | | | | | <CALayer: 0x114b14320> (layer)
| | | | | | | <HeaderView: 0x114b78a90; frame = (0 165; 320 7.5); opaque = NO; autoresize = W; layer = <CALayer: 0x114b13ec0>>
| | | | | | | | <CALayer: 0x114b78b50> (layer)
| | | | | | | | <CALayer: 0x114b78ca0> (layer)
| | | | | | | <UIImageView: 0x10afd9810; frame = (316 275; 3 273); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x10afea2a0>>
| | | | | | <UIView: 0x1212b08a0; frame = (0 0; 320 231.5); autoresize = W+H; gestureRecognizers = <NSArray: 0x1212b0b50>; layer = <CALayer: 0x1212b0960>>
| | <UINavigationBar: 0x10af6e520; frame = (0 -44; 320 44); hidden = YES; opaque = NO; autoresize = W; gestureRecognizers = <NSArray: 0x10af6ae90>; layer = <CALayer: 0x10af6e750>>
| | | <_UINavigationBarBackground: 0x10af6f460; frame = (0 -20; 320 64); opaque = NO; autoresize = W; userInteractionEnabled = NO; layer = <CALayer: 0x10af6f740>>
| | | | <_UIBackdropView: 0x111acc810; frame = (0 0; 320 64); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <_UIBackdropViewLayer: 0x10abbdfc0>>
| | | | | <_UIBackdropEffectView: 0x111acb540; frame = (0 0; 320 64); clipsToBounds = YES; opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CABackdropLayer: 0x111abc540>>
| | | | | <UIView: 0x111accc20; frame = (0 0; 320 64); hidden = YES; opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x10abbd9f0>>
| | | | <UIImageView: 0x10af6aa60; frame = (0 64; 320 0.5); userInteractionEnabled = NO; layer = <CALayer: 0x10af6ab80>>
| | | <_UINavigationBarBackIndicatorView: 0x10af72d40; frame = (8 12; 12.5 20.5); alpha = 0; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x10af72ac0>>
您可以在視圖層次看,有地圖的一部分,再有就是與所有內容的圖設置/信息,包括所有單元格的導航欄和表格視圖。讓我們來看看在視圖控制器如何設置:
po [0x1212b0530 _viewDelegate]
<SettingsViewControllerPhone: 0x12127bea0>
po [[0x1212b0530 _viewDelegate] parentViewController]
<MainChromeViewController: 0x10af511e0>
MainChromeViewController
是地圖應用的主視圖控制器。所以,如你所見,它是主視圖控制器的子視圖控制器。當您按下按鈕時,它會進行動畫製作。
它要麼與UIToolbar
定製控制器的頂部,或者是嵌入到UINavigationController
一個UIViewController。
謝謝,它太棒了。 +1 –