Tag: uiview

自定义UIView如何与IB / Xcode 4.5.1和iOS模拟器6.0

我知道有几个类似的问题,但是我发现其中大部分都不适用于当前的IB / iOS或者不完整。 我想有一个自定义UIView有一个笔尖,但没有得到正确的hooked up 。 我花了几个小时的时间进行debugging,所以我去了(也许坐在浴缸里)。 如果您觉得这是一个简单的操作,请事先道歉; thx提前任何帮助。 为了做到这一点,我: 创build自定义视图文件:文件 – >新build – >文件 – > Objective-C类,并selectUIView的types,并命名为MyView; MyView.h和MyView.m被创build 创build自定义视图笔尖:文件 – >新build – >文件 – >用户界面 – >查看并命名为“酷”; cool.xib被创build 在用于cool.xib的IB中,进入Identity Inspector并从UIView – > MyView设置自定义类; 问题1 – 此时,MyView是否知道在实例化时加载cool.xib,还是需要做更多的事情? 此外,在IB中,我突出显示文件的所有者并将其自定义类设置为MyView。 (? – 不知道这个) 我想创build一个文本标签,所以我拖出一个UILabel到cool.xib并在MyView.h中创build一个公共属性(myLabel)。 问题2我需要为MyView设置这个自定义类吗? 我不认为这只是一个标准的UILabel。 我有一个单一视图应用程序,我想有一个MyView /酷的实例,所以,在IB中,我拖动一个视图从对象检查器到ViewController.xib视图。 在IB Identity Inspector中,我将该类设置为MyView。 我将MyView.h文件导入到ViewController.h中,并在界面中为它设置一个属性。 在ViewController.m的viewDidLoad中,我将背景颜色设置为橙色,并设置了myLabel(这是由Xcode填充,所以它似乎有点工作)。 我运行的应用程序和backgroundColor被设置为橙色,但没有标签,为什么不是混淆? 上述步骤是否有误? thx提前

旋转后重新初始化UIView视图和子视图

我有一个小的问题,我的意见大小重置后旋转,我无法修复它。 我在我的视图“bottomContainerView”上放一个“滑动”动作,根据方向大小不同! 这里是我的新代码: -(void)swipeToggle:(UISwipeGestureRecognizer *)sender { if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeLeft || [[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight) { if (sender.direction == UISwipeGestureRecognizerDirectionUp){ NSLog(@"if gesture up – LS"); [UIView animateWithDuration:0.5 delay:0.1 options:UIViewAnimationOptionCurveEaseInOut animations:^{ topContainerView.frame = CGRectMake(0.0, -160.0, 480.0, 244.0); bottomContainerView.frame = CGRectMake(0.0, 0.0, 480.0, 300.0);} completion:^(BOOL finished){ NSLog(@"%f,%f",bottomContainerView.frame.size.width,bottomContainerView.frame.size.height); }]; } else if (sender.direction == UISwipeGestureRecognizerDirectionDown) […]

CABasicAnimation – 两个angular度之间的animation

我正在尝试创build一个使用CABasicAnimation的animationCALayer ,以在两个angular度之间以不连续间隔旋转的对象进行animation处理。 注意离散单词:我不是试图在两点之间创build一个连续的animation,而是我想要计算每个angular度之间的固定增量,以创build一个离散的移动感觉。 这是一张图表: 我已经考虑设置CABasicAnimation的byValue属性,但我似乎无法得到它的工作,因为你不能在一个animation中使用fromValue , ToValue ,和byValue 。 fromValue总是从零开始,所以我猜这可能会被丢弃,但是当使用当前的endAngle作为byValue和0.1的byValue (任意select,但应该用于testing)时,它仍然不会正确地animation。 任何想法如何实现这个? 这里是我正在使用的代码: anim = [CABasicAnimation animationWithKeyPath:@"currentEndAngle"]; anim.duration = 0.5f; anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; anim.toValue = [NSNumber numberWithFloat:self.endAngle]; anim.byValue = [NSNumber numberWithFloat:0.1f]; anim.repeatCount = HUGE_VALF; [anim setDelegate:self]; [self addAnimation:anim forKey:@"animKey"]; 谢谢!

捕获UIView的UIImage卡在DrawRect方法中

我想捕捉我的UIView的图像,但是当我调用这个方法 – (UIImage *) imageWithView:(UIView *)view { UIGraphicsBeginImageContext(view.bounds.size); [view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage * img = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return img; } 我的应用程序进入我的视图的DrawRect方法,并卡在这些行的循环 [super drawRect:rect]; [curImage drawAtPoint:CGPointMake(0, 0)]; mid1 = midPoint(previousPoint1, previousPoint2); mid2 = midPoint(currentPoint, previousPoint1); context = UIGraphicsGetCurrentContext(); [self.layer renderInContext:context]; 这是我的drawRect方法 – (void)drawRect:(CGRect)rect { [super drawRect:rect]; [curImage drawAtPoint:CGPointMake(0, 0)]; mid1 = midPoint(previousPoint1, previousPoint2); mid2 = midPoint(currentPoint, previousPoint1); […]

检测标注与MKMapView中的其他UIViews重叠

我有一些显示在MKMapView上的MKMapView作为控件来过滤地图的内容,我的mapView有注释,可以显示标注。我想创build一个效果,如果我的标注出现或滚动,我的覆盖层将消失在重叠之下并且在标注没有占据位置之后再次可见。 有没有办法找出如果一个MKMapView的标注重叠UIView ? 我努力了: 访问标注frame以检查它是否与叠加层相交 – 无法访问标注。 计算标注出现的位置并跟踪滚动,以计算标注是否在叠加层下方 – 无法预测标注出现的行为 – 如何转换以避免popup屏幕外 制作叠加控件需要单独的屏幕空间,因为地图变得太小,某些屏幕区域变得空闲,因为控件不占用矩形空间。 如果没有解决我的问题,将使用此作为最后的手段。 编辑 我做了我想要的效果gif 蓝色方块代表控件,红色代表标注,基本上我想让我的覆盖控件在地图下方消失。

Swift:自定义UIView.transition的问题?

好吧,我已经通过https://developer.apple.com/videos/play/wwdc2013/218/和SO问题类似的尝试使用标签栏控制器和它的viewcontrollers进行自定义转换,但在搞清楚主要步骤在这里。 我需要知道如何(意思是示例代码将是真正有用的)来调用一个自定义的UIView.transition或只是在UIView.transition的自定义option 。 我需要使用它来在标签栏控制器中的标签之间进行滑动/模式模仿转换。 我可以得到转换的唯一方法是使用下面的函数(这会使它们消失): func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool { if selectedViewController == nil || viewController == selectedViewController { return false } let fromView = selectedViewController!.view let toView = viewController.view UIView.transition(from: fromView!, to: toView!, duration: 0.3, options: [.transitionCrossDissolve], completion: nil) return true } 并在手动调用它,我编程chnage *selectedIndex*为我的选项卡控制器: //SWITCHES BUTTON ——————————————- func switchTab(index: […]

ScrollView阻止NavigationViewController

我有UINavigation控制器的UIView和其他几个Imageviews和一个文本里面的文件。 在导航栏上有一个UIBarbutton项目,推动另一个ViewController。 当导航视图控制器中的文本字段被轻敲时,它会popup键盘,导致文本字段被键盘阻止。我想要启用滚动视图,只要键盘阻止文本字段。 无论何时调用键盘,都会向此方法发送通知。 – (void)displayKeyboard { scroll=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)]; scroll.contentSize=CGSizeMake(0, 500); scroll.userInteractionEnabled=YES; [self.view addSubview:scroll]; } 我试图以编程方式将视图添加到视图,但这会导致整个视图被阻止。我可以看到滚动但它不是什么,我不能访问该视图了。 难道我做错了什么 ? 有没有其他的方式,我可以启用滚动视图,每当键盘出现,所以我可以scoll整个屏幕?

Swift 3,iOS 10 – 以编程方式声明UIStackView不适合屏幕宽度

我是一个新的Swift开发人员用WKWebView实现Safari的主要部分(我需要JavaScript和Swift之间的接口,所以SFSafariViewController不是一个选项),并试图以编程方式声明所有元素。 为了模仿Safari的search栏和进度条,我想把UISearchBar设置为一个UIProgressView的顶部,作为UIViewController的UINavigationItem的titleView 。 我可以用一个元素来pipe理它,但不能与两个元素的堆栈。 以下是我的项目现在的样子。 UISearchBar和UIProgressView太宽或太薄,不能正确填充UINavigationBar ,具体取决于旋转: 这是我的代码为ViewController.swift: import WebKit import UIKit class ViewController: UIViewController, WKNavigationDelegate, UISearchBarDelegate { var searchBar: UISearchBar = UISearchBar() var progressView: UIProgressView = UIProgressView(progressViewStyle: .bar) var stackView: UIStackView = UIStackView() var webView: WKWebView! override func loadView() { webView = WKWebView() webView.navigationDelegate = self view = webView } override func viewDidLoad() { […]

CGRectContainsPoint不适用于不同的视图

我正在做一个简单的拖放项目。 当我使用CGRectContainsPoint拖动一个视图,并放在不同的视图,它的作品。 但是这两种观点都应该是一个观点。 现在让我们说我有一个名为“A”的视图,它包含两个视图。 一个UIView和一个UIStackView 。 如果我将视图拖到堆视图到UIView它不会丢弃。 只是CGRectContainsPoint不适用于从不同的视图拖放。 有什么办法可以解决吗?

UIView调整子视图

我遇到一个奇怪的调整行为。 当我调整一个UIView,它的子视图的高度将变为0。 我会想象下面的代码只会调整视图 – 不是子视图。 NSLog(@"view = %@", view); NSLog(@"subview = %@", subview); CGRect frame = view.frame; frame.size.height = 50; view.frame = frame; NSLog(@"view = %@", view); NSLog(@"subview = %@", subview); 但是,上面的输出结果如下: view = <UIView: 0x97e68c0; frame = (0 0; 320 400); autoresize = RM+BM; layer = <CALayer: 0x97e5f10>> subview = <UIView: 0xb87f510; frame = […]