我希望自己获得更多声望,因此我可以附上我正在处理的内容的屏幕截图,但您可以在下面的第二个链接中看到一个示例。
基本上标签栏中有一个中间按钮,它会显示选项按钮(在这种情况下是苹果图像)。
使用UIDynamicAnimator和UIAttachmentBehavior将这些苹果图标设置为动画。
以下是添加选项按钮的代码
func showOptions() {
var numberOfItems = self.delegate.brOptionsButtonNumberOfItems(self)
//NSAssert(numberOfItems > 0 , "number of items should be more than 0")
var angle = 0.0
var radius:Int = 20 * numberOfItems
angle = (180.0 / Double(numberOfItems))
// convert to radians
angle = angle/180.0 * M_PI
for(var i = 0; i<numberOfItems; i++) {
var csCalc = Float((angle * Double(i)) + (angle/2))
var buttonX = Float(radius) * cosf(csCalc)
var buttonY = Float(radius) * sinf(csCalc)
var wut = (angle * Double(i)) + (angle/2)
var brOptionItem = self.createButtonItemAtIndex(i)
var mypoint = self.tabBar.convertPoint(self.center, fromView:self.superview)
var x = mypoint.x + CGFloat(buttonX)
var y = self.frame.origin.y - CGFloat(buttonY)
var buttonPoint = CGPointMake(x, y)
//println("Button Point of Button Item x:\(x) y: \(y)")
brOptionItem.layer.anchorPoint = self.layer.anchorPoint
brOptionItem.center = mypoint
var attachment = UIAttachmentBehavior(item:brOptionItem, attachedToAnchor:buttonPoint)
attachment.damping = self.damping
attachment.frequency = self.frequency
attachment.length = 1
// set the attachment for dragging behavior
brOptionItem.attachment = attachment
self.dynamicItem!.addItem(brOptionItem)
//if(self.delegate.respondsToSelector("willDisplayButtonItem")) { //Fix me
//self.delegate.brOptionsButton(self, willDisplayButtonItem:brOptionItem)
//}
self.tabBar.insertSubview(brOptionItem, belowSubview: self.tabBar)
self.dynamicsAnimator!.addBehavior(attachment)
self.items.addObject(brOptionItem)
}
}
func createButtonItemAtIndex(indexz:NSInteger) -> BROptionsItem {
println("Create button item at index")
var brOptionItem = BROptionsItem(initWithIndex:indexz)
brOptionItem.addTarget(self, action:"buttonItemPressed:", forControlEvents:.TouchUpInside)
brOptionItem.autoresizingMask = UIViewAutoresizing.None
var image = self.delegate.brOptionsButton(self, imageForItemAtIndex:indexz)
//if((image) != nil) {
brOptionItem.setImage(image, forState: UIControlState.Normal)
//}
/*
var buttonTitle = self.delegate.brOptionsButton(self, titleForItemAtIndex:indexz)
if(buttonTitle.utf16Count > 0) {
brOptionItem.setTitle(buttonTitle, forState:UIControlState.Normal)
}
*/
return brOptionItem;
}
在showOptions中,动画师被分配了一个刚刚在调用createButtomItemAtIndex时创建的brOptionItem的附件行为。
在createButtonItemAtIndex中,创建了brOptionItem并添加了一个目标,以便在点击按钮时执行一个函数。
选项按钮在没有动画的情况下工作。我可以单击它们并执行目标函数。
但是,当添加动画并将选项按钮放在它们所在的位置时,点击按钮时没有任何反应。
我非常坚持这一点。我不知道为什么动画会停止点击动作。按钮也应该是可拖动的。
这是我的源代码。我引用的代码可以在BROptiosnButton文件中看到。
https://github.com/WobbleDev/BROptionsSwift
以下是我使用的参考代码
https://github.com/BasheerSience/BROptionsButton
谢谢!