简体   繁体   中英

Info windows in the ios7 iphone

In the ios7 many times when you click on the one of the button on the tab bar, a windows appear that contains some items with a done button on the right of the navigation bar. Below image show this windows on the map application of the ios7.

Is this a new component like action-sheet or just a custom view? I want to create a page like this, what is the best way?

在此处输入图片说明

Since the maps app is available in the simulator, you can attach to it using the debugger and sent messages to its objects.

Here is a print of the recursive description of the key window:

<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>>

You can see in the view hierarchy, that there is the map part, and then there is a view with all the content of the settings/info, including a navigation bar and a table view with all the cells. Let's look at how the view controllers are set up:

po [0x1212b0530 _viewDelegate]
<SettingsViewControllerPhone: 0x12127bea0>

po [[0x1212b0530 _viewDelegate] parentViewController]
<MainChromeViewController: 0x10af511e0>

MainChromeViewController is the main view controller of the maps app. So, as you can see, it is a child view controller of the main view controller. It is animated in place when you tab the button.

它可以是顶部带有UIToolbar的自定义控制器,也可以是嵌入到UINavigationController的UIViewController。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM