[英]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. 在ios7中,当您多次单击选项卡栏上的按钮之一时,会出现一个窗口,其中包含一些项目,在导航栏的右侧带有完成按钮。 Below image show this windows on the map application of the ios7. 下图显示了ios7的map应用程序上的此窗口。
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. MainChromeViewController
是地图应用程序的主视图控制器。 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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.