在an iPhone app几个“信牌”可以左右拖动:如何在touchesBegan的自定义UIView中调整UILabel的位置?
拖动和显示更大的图像和字体在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
标签的底线对齐,并确保它们只是彼此接触(而不是相交) - 可能吗?
为了确保rect不交叉使用方法'CGRectIntersectRect'并且每当这个条件满足时相应地将交叉矩形的框架移动到某个点。 –