我正在为iPad制作一个简单的应用程序,它包含一个可以放大/缩小并导航的巨型图像.
这张图片放在a里面UIImageView,然后放在里面UIScrollView.
导航和缩放工作100%罚款; 但是,图像以固定的宽高比加载以适合屏幕,并且永远不会改变(即使在放大时).
我有一种感觉,Interface Builder正在设置一些我不知道的属性,但我已经尝试了一些我能想到的解决这个问题的方法.
问题:
当应用程序最初加载时,其中的内容UIScrollView会自动调整大小,以便通过更改其宽高比来完全适合iPad屏幕./fixed; 实际图像很大(比iPad分辨率大).即使放大图像,此缩放的宽高比仍然保持不变,并使图像看起来拉伸.
无论我尝试什么,我都无法阻止iPad自动重新缩放我的图片.我只是希望应用程序开始与我的形象在iPad上正常显示(100%缩放),与目前适合iPad的屏幕为图像的左上角上的部分.
我试图解决它:
我尝试将UIImageView'sInterface Builder中的内容模式更改为"左上角".这似乎工作得很好,但后来我意识到,UIScrollView不会让你滚动图像经过最初显示的部分(左上角).您可以放大左上角并滚动,但不要超过最初在屏幕上显示的内容.
码:
这是我用来设置视图的代码.imageScrollView是UIScrollView,而且imageView是UIImageView.他们都是IBOutlets.
// Set the needed attributes of the imageView
[imageView setImage:[UIImage imageNamed: @"TestImage.png"]];
imageView.userInteractionEnabled = YES;
// Set a bunch of the imageScrollView attributes.
// calculate minimum scale to perfectly fit image width, and begin at that scale
float minimumScale = [imageScrollView frame].size.width / [imageView frame].size.width; …Run Code Online (Sandbox Code Playgroud) 问题
我的iPad应用程序中有一个UIWebView,我需要以编程方式进行缩放,但不使用手势/点击.该应用程序.有一个"+"和一个" - "按钮,用于以用户定义的增量放大和缩小(这是一个视觉障碍的应用程序).
这个+/-缩放按钮功能以前在我的应用程序时100%正常工作.在UIScrollView(而不是WebView)中使用了UIImageView.ImageView是缩放的实际视图,并且为ScrollView的zoomToRect方法计算了CenterPoint.
我现在有一个WebView,我知道它包含一个ScrollView作为子视图.我尝试调整以前使用ImageView/ScrollView组合的代码来缩放WebView的ScrollView,但它不再为zoomToRect正确计算CenterPoint : .
怎么了:
WebView在缩放级别方面正确缩放,但中心点始终是错误的.出于某种原因,屏幕每次都会在左上角放大.
另一个奇怪的问题是,在您第一次放大后,您无法在WebView中滚动超过屏幕的可见部分.如果你尝试,它会显示一些超出当前可见区域范围的内容,但它会立即快照.
我尝试过的:
我正在尝试缩放UIWebView的ScrollView.
我创建了一个指向ScrollView的指针,并将"self"设置为其委托.然后我设置了各种变量,例如scrSize(要缩放的视图的大小)和ZoomHandler(如下所述):
- (void)viewDidLoad {
// ... Various UIWebView setup ...
[self LoadURL];
// Zooming & scrollview setup
zoomHandler = [[ZoomHandler alloc] initWithZoomLevel: ZOOM_STEP];
scrSize = CGPointMake(self.WebView.frame.size.width, self.WebView.frame.size.height);
scrollView = [WebView.subviews objectAtIndex:0];
[scrollView setTag:ZOOM_VIEW_TAG];
[scrollView setMinimumZoomScale:MINIMUM_SCALE];
[scrollView setZoomScale:1];
[scrollView setMaximumZoomScale:10];
scrollView.bounces = FALSE;
scrollView.bouncesZoom = FALSE;
scrollView.clipsToBounds = NO;
[scrollView setDelegate:self];
[super viewDidLoad];
}
Run Code Online (Sandbox Code Playgroud)
要覆盖WebView的默认缩放限制,我将此Javascript注入webViewDidFinishLoad:方法中加载的网页:
function increaseMaxZoomFactor() {
var element = document.createElement('meta');
element.name = "viewport";
element.content = …Run Code Online (Sandbox Code Playgroud) 您知道iPad如何反转颜色?对于我正在研究的应用程序,我们想要一个按钮,以同样的方式反转其中一个视图的颜色.sdk对这样的东西有什么样的支持吗?
我的问题的简短版本:
我无法弄清楚如何让我的UITapGestureRecognizer的"动作"采取额外的参数,并实际使用它们.
这是我的问题的概述:
我试图让我的iPad应用程序记录(使用NSLog)UITouch的坐标,只要他们按下我的应用程序的UIButton之一就会发生.触摸的位置需要相对于触摸的按钮.
我做了什么:
我已经实现了一个UITapGestureRecognizer并将其添加到我的每个按钮中.我的问题在于使用的操作,因为它需要对每个按钮都是动态的.
我目前有这个代码:
UITapGestureRecognizer *iconClickRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(logIcon:withTag:)];
[iconClickRecognizer setNumberOfTapsRequired:1];
[iconClickRecognizer setNumberOfTouchesRequired:1];
[iconClickRecognizer setDelegate:self];
[[self.view viewWithTag:1] addGestureRecognizer:iconClickRecognizer];
[iconClickRecognizer release];
Run Code Online (Sandbox Code Playgroud)
当我知道这有效时,我会使用for循环通过标签将iconClickRecognizer添加到所有按钮.
所述logIcon:(INT)withTag方法如下所示:
-(void)logIcon:(UIGestureRecognizer *)gestureRecognizer withTag:(int)tag {
NSLog(@"tag X: %f", [gestureRecognizer locationInView:(UIView*)[self.view viewWithTag:tag]].x);
NSLog(@"tag Y: %f", [gestureRecognizer locationInView:(UIView*)[self.view viewWithTag:tag]].y);
}
Run Code Online (Sandbox Code Playgroud)
什么不起作用:
当我将标签硬编码到logIcon方法时,它会正确记录信息.但是,我不知道如何使这个方法动态化,实际上使用"tag"参数.
任何帮助将不胜感激.
谢谢,亚历克斯
ipad ×4
iphone ×3
ios ×2
ios4 ×2
uiscrollview ×2
colors ×1
objective-c ×1
uiwebview ×1
xcode ×1