Tag: uiview

使用故事板添加自定义UIView的子视图与其他视图的AutoLayout约束?

创build一个自定义的UIView ,你怎么能使用故事板添加AutoLayout约束相关的子视图到自定义UIView之外的视图/组件? 在下面的例子中, SliceView代表一个自定义的UIView 。 在它的.xib文件中有一个UILabel 。 在添加新的UIView并将其类设置为SliceView ,新视图在Storyboard中看起来相同。 它没有inheritanceSliceView.的子视图和属性SliceView. 下面的两个屏幕截图显示了SliceView.xib的视图层次结构,以及在将UIView转换为SliceView ,层次结构在Storyboard中保持不变。 所以如果你想添加一个约束在SliceView标签上方10个像素的button,你怎么能在Storyboard内部做到这一点? class SliceView: UIView { @IBOutlet var storyboardView: UIView! @IBOutlet weak var captionLabel: UILabel! required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) if let nibsView = NSBundle.mainBundle().loadNibNamed("SliceView", owner: self, options: nil) as? [UIView] { let nibRoot = nibsView[0] self.addSubview(nibRoot) nibRoot.frame = self.bounds } } […]

翻转和缩放3D转换问题(iOS 7+)

我正在尝试构build卡片翻转和缩放的转换。 我已经在折纸 – 电影(less于1Mb) 正如你所看到的,同时应用了3个变换:1.将视图的中心移动到屏幕的中心2.缩放3. 3D旋转 我们可以分为两个阶段的animation: 阶段1:button缩放,移动并在侧面旋转(PI / 2弧度)。 在阶段1结束时button消失。 阶段2: toView (我的模态视图)旋转(从-PI / 2到0弧度),放大到正常大小,并将视图的中心移动到屏幕中心。 如果我们排除反弹 – 这是非常简单的转换。 但是在构build时遇到了一些问题: 我只是一个button,而不是整个视图。 这个button背后有一个背景。 所以,如果我应用CATransform3DMakeRotationbutton的一半消失 – 它与3D空间(Z轴)中的背景相交。 有没有办法在这里使用3DTransform? 2.屏幕上有一些文物。 我不知道他们来自哪里。 你可以检查结果电影 (3.8Mb)。 我放慢了电影中第二张卡片的animation。 这是我的这个animation的代码: func animateTransition(transitionContext: UIViewControllerContextTransitioning) { let container = transitionContext.containerView() let fromViewBig = transitionContext.viewForKey(UITransitionContextFromViewKey)! let toView = transitionContext.viewForKey(UITransitionContextToViewKey)! // Converting button to UIImageView and hiding […]

在Swift中从不同的类访问ViewController中的对象

我有一个名为myView的UIView和名为myView的UIImageView的myImageView 。 在下面的代码中,我有一个名为viewLine的类,它连接到名为myView的UIView。 我遇到的麻烦是当touchesEnded被调用时,我想更改ViewController中的myImageView的alpha。 当我尝试这个时,不会更改myImageView的alpha。 (或者,当我尝试通过将viewLine类移动到主ViewController来实现这一点,出现以下错误 – override func drawRect(rect: CGRect) – 方法不会覆盖任何超类的方法 self.setNeedsDisplay() – Valuetypes'ViewController'没有成员'setNeedsDisplay' 。) 问题: 1 – 如何修改名为viewLine的类中的代码以访问ViewController故事板上的其他UI对象或函数,如myImageView ? 即如何在touchesEnded被调用后,从名为viewLine的类中更改myImageView的alpha值? 2 – 我在ViewController中有一个滑块sliderLineSize ,在ViewController中有一个可变的lineSize 。 UISlider sliderLineSize更改lineSize 。 但是, lineSize用于viewLine类的drawRect部分。 如何传递或访问类中的ViewController中设置的variables? (3 – 如何将viewLine类并入主ViewController?) import UIKit class ViewController: UIViewController { @IBOutlet weak var myView: UIView! @IBOutlet weak var myImageView: UIImageView! var lineSize: […]

UIViewanimation在视图顶部与轴交替

我有一个UIView ,我想animation翻转起来。 这不像UIViewAnimationOptionTransitionFlipFromTop因为那将轴放置在视图的中间。 我想将轴放在视图的top ,以便翻转起来,类似于一张纸从top axis翻转(不是页面剥离)。 [UIView transitionWithView:self.view duration:0.6 options:UIViewAnimationOptionTransitionFlipFromTopAxis // <—- Wish there was an option like this animations:^{ // Exchange the views here } completion:NULL]; 我想这是不可能做到这一点与标准的UIViewanimation选项。 有什么替代方法,我可以控制翻转轴?

第一个键盘外观animation有时不顺畅

我经常注意到,当第一次出现键盘时,第一个成为第一个响应事件的时候,UIViewanimation通常是不stream畅的。 我指的是与键盘animation发生的animation,例如手动滚动UIView以使textField可见。 animation在第一次执行后总是平滑的。 有这样的技术原因吗? 我在想,在第一次运行时可能会有一些惰性加载或优化发生在UIViewanimation中,然后存储在caching中以供重用。 有没有经验教训? 如果对这个观众不清楚,我可以尝试在testing项目中重新创build问题。

如何在UIView中使用setAnimationStartDate?

如何使用setAnimationStartDate?下面的代码不起作用。 [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:3.0]; NSDate *date = [NSDate dateWithTimeIntervalSinceNow:3]; [UIView setAnimationStartDate:date]; CGPoint point = _imageView.center; point.y += 150; [_imageView setCenter:point]; [UIView commitAnimations];

如何在导航栏或其他屏幕内容上方创build视图?

我希望在导航栏上方有一个视图,或者在屏幕上没有导航栏的情况下,在任何屏幕上方显示视图,以便实质上减less其他所有内容的高度,但不包含任何内容。 我也希望这种观点允许交互(即如果它的挖掘,它会做一些事情)。 我已经尝试了UIApplication.sharedApplication().keyWindow?.addSubview(view)但是只覆盖了视图。 这是一个可视化:

具有非矩形边界的UIDynamicItem

所以我正在考虑UIKitdynamic和我碰到的一个问题是,如果我想创build一个自定义drawRect:的UIView drawRect:例如,让我们说我想画一个三angular形),似乎没有办法指定用于UICollisionBehavior的UIView(或者说UIDynamicItem)的path。 我的目标实际上是在屏幕上有多边形相互碰撞,正如人们所期望的那样。 我想出了一个拼接多个视图在一起的解决scheme,但这似乎是我想要的矫枉过正。 有没有一些简单的方法来做到这一点,还是我真的必须一起缝合观点? 担

UIView将无法在ViewDidLoad上正确移动

@IBOutlet var box: UIView! var lastLocation:CGPoint = CGPointMake(200,400) //arbitrary value that will change override func viewDidLoad() { super.viewDidLoad() box.center = lastLocation lastLocation = box.center } @IBAction func detectPan(sender: UIPanGestureRecognizer) { var translation = sender.translationInView(self.view!) box.center = CGPointMake(lastLocation.x + translation.x, lastLocation.y + translation.y) println(box.center) if(sender.state == UIGestureRecognizerState.Ended) { lastLocation = box.center } } 每当代码收到一个平移手势框将适当移动,但viewDidLoad()框将不会重新定位到给定的位置。 在IB中,它被设置在左上angular,最后的位置将会改变,所以我不能简单地在IB中移动框。 我将如何使viewDidLoad框移动到正确的位置?

iOS – 与UITableViewresize错误的PageView控制器

我有一个控制器与两个UIViews第一个有200的高度(所有iPhone常数)和第二个UIViews包含一个PageViewController ,应该得到其余的高度,它的确如此。 问题出现在UITableView获取数据时,它调整UIView的大小, UIView现在有更多的高度,因为它应该有(因为tableView调整它),我无法滚动到最后一个对象。 例如:高度屏幕= 600 首先UIView = 200; 第二个UIView = 400; 现在UITableView获取数据并加载并resize 首先UIView = 200; 第二个UIView = 600; 但屏幕只有600。 我尝试了很多select,尝试调整与第二个UIview的原始宽度和高度resize之前调整viewDidLayoutSubviews – (void)viewDidLayoutSubviews{ [super viewDidLayoutSubviews]; float a = self.tabla.frame.size.height; float a2 = self.tabla.superview.frame.size.height; //self.tabla.superview.autoresizesSubviews = false; //self.tabla.frame = CGRectMake(self.tabla.frame.origin.x,self.tabla.frame.origin.y,self.tablaSizeWidth,self.tablaSizeHeight); } 我也尝试去激活TableView的AutoLayout,它的工作! 但是如果我将它取消激活,那么它会全部取消所有的故事板,而我的第二个UIView无法获得其余的高度(认真的苹果?!) 包含页面控制器的UIView的约束 查看所有约束和布局 注意:主视图背景设置为绿色,PageAdapter背景设置为黑色。 我怎么能做到这一点?