在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'並且每當這個條件滿足時相應地將交叉矩形的框架移動到某個點。 –