当其他视图的大小增加或减少时调整UIView宽度

时间:2015-07-07 10:22:02

标签: ios uiview xamarin xamarin.ios

我有一个带左侧菜单的UIView,将右侧视图从完整推到较小的尺寸(全宽 - (菜单宽度))。 根据某人的建议,我通过更改菜单宽度约束中的常量来实现该效果:从0到200。

(右侧视图)UIView认为我将加载到它的视图具有此图像中的约束(菜单在左侧为蓝色):

img

我使用以下代码将新的UIView添加到detailsView(上面提到的容器)中:

var viewNames = NSDictionary.FromObjectsAndKeys (new NSObject[] {
    view.View
}, new NSObject[] {
    new NSString ("detailsView")
});

detailsViewContainer.AddSubview (view.View);

view.View.TranslatesAutoresizingMaskIntoConstraints = false;
detailsViewContainer.AddConstraints (NSLayoutConstraint.FromVisualFormat ("H:|[detailsView]|", 0, new NSDictionary (), viewNames));

问题是新添加的视图在折叠菜单时总是具有全宽(1024),但是当菜单展开时,将视图推到右边的app限制之外。 任何帮助将不胜感激。

提前致谢!

1 个答案:

答案 0 :(得分:1)

使主视图宽度约束(如果没有,则添加一个)为< = 1024(不严格)。我会做以下事情:

  • |H:|-0-menuView-masterView-0-|
  • 并在设计器中将masterView的宽度约束指定为Less或Equal 1024
  • 并在设计器中指定menuView的宽度约束等于200.为它创建一个出口并在代码中动态更改 动画从200到0,并在需要时返回。

其中:

  • menuView是菜单UIView
  • masterView是主UIView占位符

当您的菜单(绿色视图)打开时,宽度约束将等于200: enter image description here

一旦将约束设置为0,您的视图也会调整主占位符(橙色视图)的大小: enter image description here

请通过以下链接查找故事板示例: https://dl.dropboxusercontent.com/u/19503836/Main.storyboard