我目前正在ios 7上迁移我的应用程序,并且我已经在新的导航控制器/栏管理上被困了几个小时.
之前,当我们有导航控制器时,我们有一个这样的片段:
UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:[[MainViewController alloc]init]];
Run Code Online (Sandbox Code Playgroud)
在界面构建器中,我们可以选择为视图设置现有导航栏,并且所有内容都与实际视图的内容相匹配.
好的,现在,我不知道如何使用界面构建器正确设计.我仍然有我的片段来初始化我的navcontroller.但是在我的MainViewController的界面构建器中,如果我将状态栏设置为半透明或不透明的导航栏,我的顶部偏移量为44px(见下文).
Interface Builder_________________________和结果
现在,如果我将状态栏设置为无,则顶部没有偏移,但由于导航栏导致模拟器上的视图较小,因此界面构建器中视图的底部被切断.
Interface Builder_________________________和结果
我想我真的在这里遗漏了一些东西,但我在iOS7 Transitions Guide中找不到任何主题或苹果信息.
谢谢你的帮助
编辑
正如我们在图片中看到的那样,视图的第一个子节点是包含两个标签的UIScrollView,当没有scrollview时,问题不会出现.如果它是UITableView也会出现.如果标签位于UIScrollView之外,则该标签没有偏移量.
我正在进行一个非常基本的UIScrollView测试.这是我的设置 它向我显示以下AutoLayout错误:
ScrollView has ambiguous scrollable content height
Run Code Online (Sandbox Code Playgroud) 我有疑问UIScrollview
.
故事是我有一个UIView
名为ChartsView,我通过覆盖方法自己重新绘制它drawRect()
.绘图的内容是动态生成的.所以直到运行时我才知道它的大小.问题是如何/在哪里可以动态设置其超级视图(scrollView)的内容大小?有什么想法吗?
- (void)viewDidLoad
{
[super viewDidLoad];
// not this way. it's fixed size.....
ChartsView *chartsView = [[ChartsView alloc]initWithFrame:CGRectMake(0, 0, 320, 800)];
self.scrollView.contentSize = chartsView.frame.size;
[self.scrollView addSubview:chartsView];
}
Run Code Online (Sandbox Code Playgroud) 在过去的几天里,我试图使用自动布局约束完成一个相当简单(至少应该是)布局,但没有成功.
我的视图层次结构是:
UIScrollView
- UIView(容器视图)
----- UILabel(Multirow标签)
----- UIWebView
----- UILabel
----- UIButton
所需的功能是根据内容的大小进行扩展的Container视图.为了增加UIWebView的高度,我使用以下代码:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[self.webView sizeToFit];
}
Run Code Online (Sandbox Code Playgroud)
我尝试了许多不同的约束,最合理的约束是:
1.从第一个标签(事件标题)的superview引脚顶部空间
2.第一个标签和UIWebView的
引脚垂直间距3.其余元素的引脚垂直间距(即UIWebView - UILabel(事件日期)和UILabel(事件日期) - UIButton)
4.容器视图具有低优先级(1)底部垂直空间约束及其超级视图
我得到的结果如下:
UIWebView扩展但不会按下事件日期标签和按钮,而且Container视图也不会展开.
任何帮助将不胜感激.
我想在图像视图中显示图像(宽度:320像素,高度:1250像素).
当我编译应用程序时,我根本没有滚动.视图保持不变.
我做了什么:
UIScrollView
via Interface Builder.UIImageView
在我的视图中添加了一个via Interface Builder.UIImageView
以下内容UIScrollView
.UIScrollView
with 的大小ViewDidLoad
.我该怎么做呢?
码:
- (void)viewDidLoad
{
[super viewDidLoad];
scrollView.contentSize = CGSizeMake(320, 1250);
}
Run Code Online (Sandbox Code Playgroud)
截图:
ImageView
:
ScrollView
:
我创建了一个全新的View Controller,然后添加了Scroll View作为根视图的子项,并将"Leading/Top/Trailing/Bottom Space"设置为0,以便滚动视图完全填充其父级.
然后我添加了一个按钮作为滚动视图的子项,空间约束为15到"Superview"(即滚动视图).因此我希望按钮的间距为15到顶部/左/右边框,滚动视图的内容以"按钮底部+ 15"结束.但是按钮的宽度不正确(在Xcode 5 Interface Builder,iOS 6/7模拟器中测试):
如果我用"Equade Width to Superview"限制按钮,它甚至不起作用!仍然没有占据全宽.
我该如何解决这个问题?
我有:
我在界面生成器"有不明确的可滚动内容宽度"中发出警告.
我知道解决这个问题的唯一方法是设置尾随和前导约束.但是对于不同的iPhone(5.5",4.7",4"),我需要设置不同的尾随和前导约束.
如何消除此警告仍然具有固定W和H的所有iPhone尺寸的水平视图居中?
我创建Github repo来说明这个问题:ScrollViewAmbigous
这与UIScrollView Scrollable Content Size Ambiguity不重复 ,但它类似(虽然没有回答),但这个问题尤其与不同尺寸的iPhone有关.
在IB我有我的UIView.然后我有一个子UIView,UIScrollView作为子视图.然后UIScrollView有一个子UIImageView.UIScrollView和UIImageView的大小相同.它们比它们是子视图的UIView大得多.我认为这会使滚动工作.它没有.滚动视图是否需要某种代码才能工作?
我基本上试图重现警报的标题和消息部分的行为.
标题和消息标签似乎位于滚动视图中.如果标签文本增加,则警报高度也随着标签的固有内容大小而增加.但在某个高度,警报高度停止增加,标题和消息文本变为可滚动.
我读过的内容:
用品
堆栈溢出
答案可能在那里,但我无法抽象它.
我尝试过的:
我只关注具有两个标签的滚动视图,我试图做一个最小的例子,其中父视图将根据scrollview的内在高度调整大小.我玩过很多限制.这是一个组合(许多)组合不起作用:
我使用过自动布局和正常约束,甚至内在的内容大小.此外,我知道如何使用自动布局获得基本滚动视图.但是,我从未做过任何关于优先级和内容拥抱以及抗压缩性的事情.从我所做的阅读中,我对它们的含义有一种肤浅的理解,但我不知道如何在这种情况下应用它们.我的猜测是我需要对内容拥抱和优先级做些什么.
设置:
我正在使用Xcode 5中的一个视图来显示一组文本字段.为了在键盘出现时处理滚动,我使用滚动视图来放置我的TextFields.我正在使用autolayout.
问题:
我正在努力解决在运行时将额外空间添加到滚动视图顶部的问题.就像插件被应用到我的滚动视图一样,虽然我已经通过日志记录确认了insets为零.
在我的viewDidLoad()方法实现中我这样做是为了确认值...
UIEdgeInsets contentInsets = UIEdgeInsetsZero;
self.scrollView.contentInset = contentInsets;
self.scrollView.scrollIndicatorInsets = contentInsets;
self.scrollView.contentSize = self.scrollView.bounds.size;
self.scrollView.contentOffset = CGPointMake(0.0, 0.0);
NSLog(@"Content Size: %f x %f", self.scrollView.contentSize.height, self.scrollView.contentSize.width);
NSLog(@"Bounds Size: %f x %f", self.scrollView.bounds.size.height, self.scrollView.bounds.size.width);
NSLog(@"Frame Size: %f x %f", self.scrollView.frame.size.height, self.scrollView.frame.size.width);
NSLog(@"Inset Size top: %f bottom: %f", self.scrollView.contentInset.top, self.scrollView.contentInset.bottom);
NSLog(@"Scroll Inset Size top: %f bottom: %f", self.scrollView.contentInset.top, self.scrollView.contentInset.bottom);
Run Code Online (Sandbox Code Playgroud)
输出:
2013-10-08 11:38:42.953 test[6440:a0b] Content Size: 455.000000 x 320.000000
2013-10-08 11:38:42.954 test[6440:a0b] Bounds Size: 455.000000 …
Run Code Online (Sandbox Code Playgroud) uiscrollview ×8
autolayout ×6
ios ×4
iphone ×3
objective-c ×3
ios7 ×2
ios4 ×1
ios5 ×1
ios6 ×1
storyboard ×1
uiimageview ×1
uiview ×1
xcode5 ×1
xcode6 ×1