objective-c – 使用autolayout,当我更改标签文本时,标签位置会重置

objective-c – 使用autolayout,当我更改标签文本时,标签位置会重置,第1张

概述我正在Objective-c中开发一个非常简单的应用程序. 在应用程序中,用户可以通过拖动屏幕来更改标签的位置. Tap&拖动屏幕,标签上下移动以匹配手指的位置. 松开手指时,标签的坐标信息将设置为其文本. 但标签位置在文本更改时重置. // IBOutlet UILabel *label- (void) touchesBegan:(NSSet *)touches withEvent:(UIE 我正在Objective-c中开发一个非常简单的应用程序.
在应用程序中,用户可以通过拖动屏幕来更改标签的位置.

Tap&拖动屏幕,标签上下移动以匹配手指的位置.
松开手指时,标签的坐标信息将设置为其文本.

但标签位置在文本更改时重置.

// IBOutlet UILabel *label- (voID) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{    CGPoint touch = [[touches anyObject] locationInVIEw:self.vIEw];    label.center = CGPointMake(label.center.x,touch.y);}- (voID) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{    CGPoint touch = [[touches anyObject] locationInVIEw:self.vIEw];    label.center = CGPointMake(label.center.x,touch.y);}- (voID) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{    CGPoint touch = [[touches anyObject] locationInVIEw:self.vIEw];    label.text = [Nsstring stringWithFormat:@"y = %f",touch.y];}

在touchesEnded事件中,只需更改标签的文本,
但它的位置已经重置.

我试图改变touchesEnded事件如下,但它没有解决问题.

- (voID) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{    CGPoint touch = [[touches anyObject] locationInVIEw:self.vIEw];    label.text = [Nsstring stringWithFormat:@"y = %f",touch.y];    label.center = CGPointMake(label.center.x,touch.y);    // add this line}

我想在不取消选中“使用自动布局”的情况下解决这种奇怪的行为.
我想继续使用自动布局.

我的应用程序有4个截图.

4 Screenshots

>第一张图片是故事板.
我有一个带有自动布局约束的标签.
>第二张图片是启动应用程序后的屏幕截图.
>第三个图像是用户拖动屏幕时,
并且标签向下移动以匹配手指.
>释放手指后,第四张图像就出现了
标签文字已更改.

解决方法 你不能使用自动布局和改变事物的中心/框架;那些是对立的.做一个或另一个 – 不是两个.

因此,您不必关闭自动布局,但如果不这样做,则必须使用自动布局和自动布局来定位.

移动标签时,请勿更改其中心 – 更改其约束.或者至少,改变了它的中心,改变其约束以匹配.

否则,当布局发生时,约束会将它放回到您告诉它们放置它的位置.当您更改文本时,以及在许多其他时间,布局确实会发生.

总结

以上是内存溢出为你收集整理的objective-c – 使用autolayout,当我更改标签文本时,标签位置会重置全部内容,希望文章能够帮你解决objective-c – 使用autolayout,当我更改标签文本时,标签位置会重置所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1065541.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存