【发布时间】:2014-03-05 20:29:20
【问题描述】:
在an iPhone app 中可以拖动几个“字母图块”:
在Tile.m中实现了拖拽显示大图和字体:
- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
[_normal setHidden:YES];
[_dragged setHidden:NO];
[_letter setFont:[UIFont systemFontOfSize:60]];
[_value setFont:[UIFont systemFontOfSize:20]];
[self.superview bringSubviewToFront:self];
}
- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event
{
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:self];
CGPoint previous = [touch previousLocationInView:self];
self.frame = CGRectOffset(self.frame,
(location.x - previous.x),
(location.y - previous.y));
}
- (void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event
{
[_normal setHidden:NO];
[_dragged setHidden:YES];
[_letter setFont:[UIFont systemFontOfSize:36]];
[_value setFont:[UIFont systemFontOfSize:16]];
}
除了右下角较小的UILabel(它应该显示一个整数 - 字母的“值”)之外,这很好用。
我已尝试启用自动布局并添加约束...并在 Tile.xib(此处为 fullscreen)中禁用自动布局:
但还没有找到满意的解决方案(调整后的位置不一定要科学准确)。
作为一个 iOS 编程新手,我不确定我有哪些选择,有人可以建议如何最好地解决它吗?
就像将value 标签的基线与letter 标签的底线对齐 + 确保它们只是相互接触(而不是相交) - 这可能吗?
【问题讨论】:
-
要确保矩形不相交,请使用
CGRectIntersectRect方法,并且只要满足此条件,就将相交矩形的框架相应地移动到某个点。
标签: ios iphone interface-builder uilabel xib