Tag: 旋转

在设备方向改变之后,翻译触摸坐标时出错

好的情况是,我有一个自定义类创build一个包含图像的视图,并处理所有自己的触摸事件。 偶尔我想检查一下,如果移动它会导致它重叠父视图上的另一个视图。 因此,在相关的触摸事件之后,我在父视图上调用一个方法,将最后一个触摸坐标传递给它并返回一个BOOL。 这个工作正常,而应用程序保持纵向。 问题在于旋转设备后,所有的图像都自动旋转,所传递的CGPoint现在与父视图相比处于旋转的坐标系中,被调用的CGRectContainsPoint方法不再正常工作。 在我的willAnimateRotationToInterfaceOrientation方法中,我正在调整每个自定义视图的位置以改进新方向的布局,例如 view.frame = CGRectMake((view.frame.origin.x*1.5),(view.frame.origin.y/1.5),view.frame.size.width,view.frame.size.height); 我读过,调用setBound方法将重置坐标系: [view setBounds:view.frame]; 但是这并没有改变我的情况。 我也试着修改“convertPoint:toView”,但是它给的价值也没有多大意义。 我认为在坐标系已经旋转的情况下它不起作用。

自定义注释图像只在程序开始时旋转(Swift-iOS)

请帮助一个初学者的iOS开发者在这里! :)所以,我有一个计时器,定期从一个XML表提供公交车的实时位置的XML表获取公交车的经纬度。 我能够设置parsing器,为公交车运动设置animation并为公交车设置自定义(箭头)图像。 然而,问题是,每当我得到新的纬度和经度值时,我都无法旋转公交标注。 busAnnotation仅在程序启动busAnnotation旋转,但不是每次总线方向都更新。 下面是我的xml parser函数,它每次更改位置时都会计算busDirection 。 busDirection的值随着位置变化而正确改变,但是由于某些原因,定时器继续运行,它不适用于旋转。 注释的移动也是非常生动的,除了程序启动之外,它不会旋转。 // Some constants var oldLatitude: Double? = 44.97234 var oldLongitude: Double? = -93.2446329 var busDirection: CLLocationDirection() func parser(parser: NSXMLParser!, didStartElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!, attributes attributeDict: NSDictionary!) { if (elementName == "vehicle") { var latitude = attributeDict["lat"]?.doubleValue // Get latitude of bus […]

ios ipad:在横向模式下将TabBar旋转到左侧,并进行变换和约束更新

我正在创build一个ios的iPad应用程序,它有一个UITabBar控件位于底部的3个MenuItems。 通常,当我旋转设备时,tabbar将保持在横向的底部。 我希望TabBar在风景模式下左侧旋转,并成为垂直表示。 如果可能的话,我不想创build一个带有button的UIView,因为我想要同一个对象来pipe理这两个对象,而且我喜欢普通TabBar的便利。 我的计划是检测设备的位置,并使用UITransform在横向上旋转TabBar 90度。 现在让我们忽略里面的图标和文本旋转,只关注整个TabBar本身。 旋转工作,除了它离开垂直TabBar在屏幕的底部中心看起来很不恰当的地方。 接下来的任务是将其限制在左侧墙上。 通常我使用3个约束来将TabBar保持在左侧/下侧/右侧。 我很难find正确的约束来正确保持它的左侧。 一个主要的问题是,一旦完成转换,高度和宽度属性在标签栏上反转(或者也转换)。 如此之高使其在屏幕上更宽,而宽度则更高。 除了顶部/底部+高度组合导致约束冲突之外,使用顶部/底部约束以及49的高度是看起来需要的。 我附上我当前的合理工作的约束逻辑,但我不明白为什么我需要硬编码这些值如图所示。 这是获得左侧视觉输出的唯一方法。 我想知道是否有一个更干净的方法来做到这一点,也许没有硬编码值的常量。 我也不确定我将如何最终旋转文本+图标作为下一步。 附件也是目前的情况。 清楚地说明是绿色的,但最终是透明的,所以景观的顶部的截止点不会成为问题。 – (void) adjustViewsForOrientation:(UIInterfaceOrientation) orientation { switch (orientation) { case UIInterfaceOrientationPortrait: case UIInterfaceOrientationPortraitUpsideDown: { //load the portrait view // revert to normal transform _tabBar.transform = CGAffineTransformRotate(CGAffineTransformIdentity, M_PI*2); [self.view removeConstraint:_tabbarConstraintT]; [self.view removeConstraint:_tabbarConstraintR]; [self.view removeConstraint:_tabbarConstraintB]; [self.view removeConstraint:_tabbarConstraintL]; // […]

强制视图控制器只肖像

在我的应用程序中,我试图强制视图控制器只是肖像。 我正在使用下面的代码,但没有真正发生。 我仍然可以在纵向上看到横向的屏幕? 我在项目设置中启用了横向(左/右),纵向。 我做错了什么? ViewController.m – (BOOL)shouldAutorotate { return NO; } – (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait; }

强制景观iOS 6

我期待在我的应用程序中有一个视图有横向方向。 当手动旋转时,我已经设法使视图保持在横向,但是如果设备已经是纵向的,它将保持纵向,而不pipe它支持的方向(使用supportedInterfaceOrientations方法设置)。 有没有办法让视图自动旋转? 我努力了: [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:NO]; 但是这不起作用。 任何build议将不胜感激!

SceneKit:如果目标是旋转相机和项目节点X单位在相机前,使用变换或直接操纵旋转/位置属性?

对于体素艺术应用程序,其目标是让用户在SceneKit场景中移动和旋转摄像头,然后点击以放置块。 下面的代码让用户通过平移来旋转摄像头。 手势结束后,我们移动一个现有的块,使其在相机的Z轴上为-X个单位(即相机前面的-X个单位)。 cameraNode是场景的angular度,是userNode一个子userNode 。 当用户移动操纵杆时,我们更新userNode.的位置userNode. 问题:其他SOpost通过应用变换而不是改变旋转和位置属性来操作相机节点。 一种方法比另一种更好吗? func sceneViewPannedOneFinger(sender: UIPanGestureRecognizer) { // Get pan distance & convert to radians let translation = sender.translationInView(sender.view!) var xRadians = GLKMathDegreesToRadians(Float(translation.x)) var yRadians = GLKMathDegreesToRadians(Float(translation.y)) // Get x & y radians xRadians = (xRadians / 6) + curXRadians yRadians = (yRadians / 6) + curYRadians // Limit yRadians […]

在canvas上固定ios7压缩图像,旋转和缩放

我遇到了使用canvas在iOS7中被压扁的问题。 我发现以下post似乎正朝着正确的方向前进: HTML5 Canvas drawImage比率错误iOS 但是,我超越了绘制图像的简单情况,在绘制图像之前,我也在旋转和缩放上下文(对于带有EXIF方向数据的缩略图)。 代码会运行,但缩略图中没有图像数据。 我猜这与canvas旋转和缩放有关。 但是,我很难理解为什么当我的挤压因子是1(在没有错误的iOS设备上)时,缩略图不能正确创build。 这是我的完整的“onload()”代码: reader.onloadend = function(evt) { console.log('read file data!'); var tempImg = new Image(); console.log('created new Image'); tempImg.src = evt.target.result; console.log('set canvas to file'); // alert(this); tempImg.onload = function() { console.log('loaded tempImg'); var MAX_WIDTH = 450; var MAX_HEIGHT = 450; var tempW = tempImg.width; var tempH = […]

iOS在模态视图控制器旋转时旋转视图控制器

我有一个UIViewController A在UIButton操作上打开另一个模式UIViewController B. 我的问题是:当前的模式UIViewController B打开,并且旋转 – 以前的UIViewController A根本不旋转。 这意味着,当我解雇UIViewController B – UIViewController A仍然是旧的状态(仍旧旧的界面方向)。 目前我正在强制A通过在B旋转时调用A中的方法来旋转。 有没有其他常见的方式来通知其他视图控制器的旋转? 或者什么是正确的方法?

全屏YouTubevideo,旋转和状态栏(iOS)

我在当前的项目中遇到了一个问题,所以我创build了一个简单的应用程序,以查看是否可以隔离问题。 在我的应用程序委托我隐藏状态栏。 [application setStatusBarHidden:YES animated:NO]; 在我单一的视图控制器我有这样的代码: – (void)loadVideo { // HTML to embed YouTube video NSString *youTubeVideoHTML = @"<html><head>\ <body style=\"margin:0\">\ <embed id=\"yt\" src=\"%@\" type=\"application/x-shockwave-flash\" \ width=\"%0.0f\" height=\"%0.0f\"></embed>\ </body></html>"; // Populate HTML with the URL and requested frame size NSString *html = [NSString stringWithFormat:youTubeVideoHTML, @"http://www.youtube.com/watch?v=VDRoBnL1gRg", 500, 500]; // Load the html into the webview [self.webview […]

IOS6轮换问题

我知道你必须使用IOS6的新的旋转方法,但似乎我写的方法不起作用。 我设置了我的plist文件来允许所有的旋转,但不是portraitUpsideDown 然后我在我的appDelegate中有以下内容: self.navController = [[UINavigationController alloc] initWithRootViewController:self.viewController]; [self.window setRootViewController:navController]; //add nav controller to be the root view 然后在我的rootView,推到另一个控制器,我有: WebViewViewController *webController = [[JBWebViewViewController alloc] init]; webController.urlString = urlName; [self.navigationController pushViewController:webController animated:YES]; 在Web控制器中我有: #pragma mark – System Rotation Methods //for any version before 6.0 – (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { //only allow landscape return (interfaceOrientation == UIInterfaceOrientationPortrait); } /for […]