Shr*_*uti 9 iphone uiview ios swift
我正在尝试创建一个自定义,UIView并使用Swift在我的主视图中将其显示为弹出窗口.
我的自定义UIView代码是
class DatePopUpView: UIView {
var uiView:UIView?
override init() {
super.init()
self.uiView = NSBundle.mainBundle().loadNibNamed("DatePopUpView", owner: self, options: nil)[0] as? UIView
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
required override init(frame: CGRect) {
super.init(frame: frame)
}
}
Run Code Online (Sandbox Code Playgroud)
我在主视图中将其称为:
@IBAction func date_button_pressed (sender : AnyObject?) {
var popUpView = DatePopUpView()
var centre : CGPoint = CGPoint(x: self.view.center.x, y: self.view.center.y)
popUpView.center = centre
popUpView.layer.cornerRadius = 10.0
let trans = CGAffineTransformScale(popUpView.transform, 0.01, 0.01)
popUpView.transform = trans
self.view .addSubview(popUpView)
UIView .animateWithDuration(0.5, delay: 0.0, options: UIViewAnimationOptions.CurveEaseInOut, animations: {
popUpView.transform = CGAffineTransformScale(popUpView.transform, 100.0, 100.0)
}, completion: {
(value: Bool) in
})
}
Run Code Online (Sandbox Code Playgroud)
但popUp并非即将到来.我使用断点并注意到该值已分配给我的popUpView但仍然没有显示在我的主视图上.请帮忙
请注意:我使用StoryBoard作为我的mainView和自定义View使用xib.
将视图呈现为模态 Segue
看看这个教程:
http://makeapppie.com/2014/08/30/the-swift-swift-tutorials-adding-modal-views-and-popovers/
您可以使用系统提供的 Segue 过渡或进行自定义 Segue 过渡以获得真正奇特的效果。
这是制作自定义过渡动画器的一种方法:
//
// BaseTransitionAnimator.swift
//
import UIKit
class BaseTransitionAnimator : NSObject, UIViewControllerAnimatedTransitioning {
enum PresentationMode {
case Presenting, Dismissing
}
var duration : NSTimeInterval = 1.0
var mode : PresentationMode = .Presenting
init(duration: NSTimeInterval, mode: PresentationMode) {
self.duration = duration
self.mode = mode
}
func transitionDuration(transitionContext: UIViewControllerContextTransitioning) -> NSTimeInterval {
return duration
}
func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
// stub - must be overriden by inheritor
}
Run Code Online (Sandbox Code Playgroud)
//
// ExpandingTransitionAnimator.swift
//
import UIKit
class ExpandingTransitionAnimator : BaseTransitionAnimator {
enum ExpansionMode {
case Basic, WithFadingImage
}
var image : UIImage? = nil
override init(duration: NSTimeInterval, mode: PresentationMode) {
super.init(duration: duration, mode: mode)
}
override func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
var fromVC = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey)!
var toVC = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)!
var fromView = fromVC.view
var toView = toVC.view
var containerView = transitionContext.containerView()
var duration = transitionDuration(transitionContext)
var initialFrame = transitionContext.initialFrameForViewController(fromVC)
var imageView : UIImageView?
if image != nil {
imageView = UIImageView(image: image!.crop(CGPointMake(0, 0), size: toView.frame.size))
}
if (mode == .Presenting) {
toView.transform = CGAffineTransformMakeScale(0.05, 0.05)
var originalCenter = toView.center
containerView.addSubview(toView)
if imageView != nil {
imageView!.transform = CGAffineTransformMakeScale(0.05, 0.05);
containerView.addSubview(imageView!)
}
UIView.animateWithDuration(duration,
delay:0.0,
options:.CurveEaseInOut,
animations: {
if imageView != nil {
imageView!.alpha = 0.0
imageView!.transform = CGAffineTransformMakeScale(1.0, 1.0)
}
toView.transform = CGAffineTransformMakeScale(1.0, 1.0)
toView.center = originalCenter
},
completion: { _ in
transitionContext.completeTransition(!transitionContext.transitionWasCancelled())
})
} else { // dismissing
UIView.animateWithDuration(duration,
animations: {
fromView.transform = CGAffineTransformMakeScale(0.05, 0.05)
fromView.center = toView.center
},
completion: { _ in
fromView.removeFromSuperview()
transitionContext.completeTransition(!transitionContext.transitionWasCancelled())
})
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27298 次 |
| 最近记录: |