UIView 根据边缘调整大小

Posted

技术标签:

【中文标题】UIView 根据边缘调整大小【英文标题】:UIView resizing based on edges 【发布时间】:2012-12-01 06:19:01 【问题描述】:

如何根据边缘调整UIView 的大小?

实际上我正在以编程方式创建UITextField,如果用户愿意,他们可以通过拖动其边缘来增加和减少UITextField's 的高度和宽度..

我不想按比例改变它的高度和宽度。如果用户想要高度,那么只有高度会改变,如果宽度那么只有宽度。

所以我找到了以编程方式获取 One UIView 然后将 UITextField 放入其中的解决方案..

所以我的问题是,我们如何通过触摸 UIView 的边缘来改变 UIView 的高度和宽度?

我对@9​​87654329@ 了如指掌,但不想这样。

我已经通过this stackoverw link. 也得到了this solution 但它对我没有用..

请建议我该怎么做?

更新

目前正在SPUserResizableView 上工作,我认为这会很有用..

感谢我所有的朋友..

【问题讨论】:

为什么第一个链接没用?它将很好地实现调整大小。你有更具体的目标吗? @MilesAlden 当您使用 UIPanGestureRecognizer 时,它将按比例增加宽度和高度。我不会那样做 @Mehul UIPanGestureRecognizer 报告手势的 X 和 Y 偏移量。但是您可以在用户拖动高度手柄时忽略 X 偏移量,而当用户拖动宽度手柄时忽略 Y 偏移量。 @Mehul 另外,您还没有解释为什么 SPUserResizableView 对您没有用处。 @robmayoff 抱歉没有更新我的问题,但我目前正在尝试将其用于相同的目的.. 【参考方案1】:

这很简单。 你听说过 -

TouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;

TouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;

TouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;

TouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;

你只需要在你的 UIView 类中添加这个方法。 然后通过某种计算,您可以做到这一点。 说当您触摸触摸开始时,方法会被调用...在触摸移动中,您可以移动 uiview 的动画以增加或减少高度或宽度。 因为上述所有函数都会为您提供 x 和 y 的坐标。

希望对你有所帮助。

【讨论】:

我知道而且很简单..但是你能详细说明一下吗..你做过吗?

以上是关于UIView 根据边缘调整大小的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 如何根据视频播放器框架的大小动态调整 UIView 的大小

将图像拉伸到浏览器边缘并根据浏览器的大小自动调整大小

UIView - 调整大小以适应内容

使用自动调整子视图大小为 UIView 帧大小更改动画

UIView 调整内容大小

Swift:如何通过按住按钮来逐步调整 UIView 的大小