And*_*rew 5 iphone uiscrollview popover ipad uipopovercontroller
所以我有一个view按钮UIScrollView.当用户按下按钮时,我希望UIPopOverController显示指向所选按钮.它有点工作,但弹出窗口的大小错误,并指向视图中的随机点.这是我的代码.提前致谢.
-(void)detail:(id)sender{
UIButton *button = sender;
NSLog(@"tag = %i", button.tag);
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
self.popover = [[UIPopoverController alloc] initWithContentViewController:navController];
self.popover.delegate = self;
[self.popover presentPopoverFromRect:button.bounds inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
比弹出窗口大小的问题:在popover内部的视图中,我有:
self.contentSizeForViewInPopover = scroll.contentSize;
NSLog(@"%f, %f", scroll.contentSize.height, scroll.contentSize.width);
NSLog(@"showing: %f, %f", self.contentSizeForViewInPopover.height, self.contentSizeForViewInPopover.width);
Run Code Online (Sandbox Code Playgroud)
并且两个日志都匹配.所以我认为一切都应该正常.但事实并非如此.这是一个截屏.如果您需要更多我的代码,请告诉我.提前致谢.

Red*_*ing 23
我注意到的第一件事是你应该使用button.frame而不是from矩形的button.bounds .这些UIView属性之间的区别:
视图的几何形状由其框架,边界和中心属性定义.frame属性在其superview的坐标系中定义视图的原点和尺寸,并且通常在布局期间用于调整视图的大小或位置.
bounds属性定义视图的内部尺寸,并且几乎只用于自定义绘图代码.
您可以使用setPopoverContentSize消息设置弹出框控制器的高度:
// so something like this ...
[self.popover setPopoverContentSize:CGSizeMake(320, 460)];
// and to bind the popover to your button
[self.popover presentPopoverFromRect:button.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
Run Code Online (Sandbox Code Playgroud)
仅关于弹出窗口的大小:我设法使用可变高度的 UILabel 来做到这一点:
UILabel *hinweis;
hinweis.text = @"...";
hinweis.frame = CGRectMake(x,y,width,800);
[hinweis sizeToFit];
Run Code Online (Sandbox Code Playgroud)
对于箭头:您是否尝试过不同的 inView 参数,例如 self.parentViewController.view?
| 归档时间: |
|
| 查看次数: |
11686 次 |
| 最近记录: |