UIScrollView contentOffset属性的用法是什么?
好的,所以这里的关键是我没有使用IB,因为我正在使用的视图是以编程方式创build的。 UIView覆盖屏幕的下半部分,并在其上有一堆button。 但是,我想添加更多的button到UIView ,而不是更大。 为此,我想在视图中创build一个UIScrollView ,这将允许我在屏幕上添加更多button,以便用户可以滚动到它们。 我认为这是如何工作的。 self.manaView = [[[UIView alloc] initWithFrame:frame] autorelease]; self.manaView.backgroundColor = [UIColor purpleColor]; UIScrollView *scroll = [UIScrollView alloc]; scroll.contentSize = CGSizeMake(320, 400); scroll.showsHorizontalScrollIndicator = YES; [self.manaView addSubview:scroll]; 代码的第一部分介绍了我的UIView ,这很好,但我不知道如何编程UIScrollView并将其添加到视图,然后将button添加到它。 UIButton *ret2 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; ret2.tag = 102; ret2.frame = CGRectMake(255, 5, 60, 50); [ret2 setTitle:@"Return" forState:UIControlStateNormal]; [ret2 addTarget:self action:@selector(flipAction:) forControlEvents:UIControlEventTouchUpInside]; [scroll […]
以下代码(在viewDidLoad中调用)将导致全红屏幕。 我希望它是一个完全绿色的屏幕。 为什么它是红色的? 我怎样才能让它变成绿色? UIScrollView* scrollView = [UIScrollView new]; scrollView.translatesAutoresizingMaskIntoConstraints = NO; scrollView.backgroundColor = [UIColor redColor]; [self.view addSubview:scrollView]; UIView* contentView = [UIView new]; contentView.translatesAutoresizingMaskIntoConstraints = NO; contentView.backgroundColor = [UIColor greenColor]; [scrollView addSubview:contentView]; NSDictionary* viewDict = NSDictionaryOfVariableBindings(scrollView,contentView); [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollView]|" options:0 metrics:0 views:viewDict]]; [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView]|" options:0 metrics:0 views:viewDict]]; [scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[contentView]|" options:0 metrics:0 views:viewDict]]; [scrollView […]
我想用图像内容视图滚动视图。 图像实际上是比屏幕大得多的地图。 地图应该最初位于滚动视图的中心,比如当您将iPhone转为横向时,照片应用中的照片。 我没有设法在正确的缩放和滚动中心的地图。 假设地图图像从屏幕的顶部开始(纵向),代码如下所示: – (void)loadView { mapView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"map.jpg"]]; CGFloat mapHeight = MAP_HEIGHT * SCREEN_WIDTH / MAP_WIDTH; mapView.frame = CGRectMake(0, 0, SCREEN_WIDTH, mapHeight); scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)]; scrollView.delegate = self; scrollView.contentSize = mapView.frame.size; scrollView.maximumZoomScale = MAP_WIDTH / SCREEN_WIDTH; scrollView.minimumZoomScale = 1; [scrollView addSubview:mapView]; self.view = scrollView; […]
在我的应用程序,我有一个UISearchBar UINavigationBar下,所以它总是可见的用户。 在这种情况下,我不得不设置额外的44px的contentInset,所以UIScrollView将在UISearchBar下滚动(就像在Contacts.app中一样) 。 而静态UITableView的没有问题,但在我的情况下,我不得不重新加载它的内容,切换到UISearchDisplayController等,所以当我打电话: [self.tableView setContentInset:UIEdgeInsetsMake(108, 0, 0, 0)]; 一切工作,直到例如我拉刷新…(为此我使用SSPullToRefresh )。 所以我的问题是: 我如何永久设置contentInset所以我不必担心UITableView数据发生任何变化?
我有一个相当简单的视图configuration: 一个UIViewController ,在这个UIScrollView有一个子UIScrollView和一个UIImageView 。 我设置了UIImageView的高度足以突破可见区域(即高于1024pt ),并将Bottom space to superview设置为我的UIImageView 1024pt约束为固定的正值(例如20 )。 整个设置按预期工作,图像在其父项中很好地滚动。 除了滚动视图(如果滚动到视图的底部,效果更明显),然后消失,再次出现(切换到另一个视图并返回)滚动值将被恢复,但滚动的内容滚动视图移动到其父视图的外部顶部。 这不是简单的解释,我会试图画出来: 如果你想testing/查看来源(或故事板,我没有编辑一行代码)。 我在我的github上放了一个小样本: https : //github.com/guillaume-algis/iOSAutoLayoutScrollView 我没有阅读iOS 6 changelog和关于这个特定主题的解释,并认为这是第二个选项(纯自动布局)的正确实现,但在这种情况下,为什么UIScrollView行为如此不正常? 我错过了什么吗? 编辑 :这是完全相同的问题#12580434 uiscrollview-autolayout问题 。 答案只是解决方法,任何人find一个正确的方法来解决这个问题,或者这是一个iOS的错误? 编辑2 :我发现另一个解决方法,保持滚动位置在相同的状态,用户离开它(这是一个改进超过12580434的接受答案): @interface GAViewController () @property CGPoint tempContentOffset; @end @implementation GAViewController -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; self.tempContentOffset = self.mainScrollView.contentOffset; self.scrollView.contentOffset = CGPointZero; } -(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; self.scrollView.contentOffset […]
我有一个应用程序,我的主视图接受touchesBegan和touchesMoved ,因此采取单手指触摸,拖动。 我想实现一个UIScrollView ,我有它的工作,但它覆盖拖动,因此我的contentView从来没有收到它们。 我想实现一个UIScrollview ,其中双指拖动指示滚动,单指拖动事件传递给我的内容视图,所以它正常执行。 我是否需要创build我自己的UIScrollView的子类? 这是我的代码从我的appDelegate我实现UIScrollView 。 @implementation MusicGridAppDelegate @synthesize window; @synthesize viewController; @synthesize scrollView; – (void)applicationDidFinishLaunching:(UIApplication *)application { // Override point for customization after app launch //[application setStatusBarHidden:YES animated:NO]; //[window addSubview:viewController.view]; scrollView.contentSize = CGSizeMake(720, 480); scrollView.showsHorizontalScrollIndicator = YES; scrollView.showsVerticalScrollIndicator = YES; scrollView.delegate = self; [scrollView addSubview:viewController.view]; [window makeKeyAndVisible]; } – (void)dealloc { […]
我在我的应用程序中遇到了一个小问题。 我基本上有一系列的UIButtons作为子UIScrollView的一部分UIScrollView添加为子视图。 每次点击一个button,在button被突出显示之前,都会有明显的延迟。 我基本上必须在button变暗并显示选定之前保持约半秒。 我假设这是因为UIScrollView需要确定触摸是滚动还是触摸是为子视图。 无论如何,我有点不确定如何进行。 我只是希望button出现被选中,只要我点击它。 任何帮助表示赞赏! 编辑: 我已经尝试将delaysContentTouches设置为NO,但滚动几乎是不可能的,因为我的scrollView的大部分是充满了UIButtons 。
目前,我正在使用一个UITableView以及包含在UIScrollView其他视图。 我希望UITableView的高度与内容高度相同。 为了使事情复杂化,我还插入/删除行以提供手风琴效果,以便当用户点击一行时,将显示该行的更多详细信息。 我已经完成了插入/删除操作,尽pipe目前它并没有更新它的超级视图的UIScrollView,所以重新计算了UIScrollView的内容大小,并且UITableView和UIScrollView中的其他视图显示正确。 我怎么能去实现这个,以便UIScrollView的大小调整,并且当我改变UITableView的内容时,它的内容正确地布置了? 我目前正在使用自动布局。
我遇到了一些有点奇怪的contentInsets 我有一个UITextView在我的故事板中有一个剩下的50个contentInset,因为我试图添加一些填充到我的uitextview 但是,在uitextview的底部会出现一个滚动条,如下面的testing所示: 我的印象是contentInset压缩uitextview而不引起这个水平滚动条,所以我怎样才能删除水平滚动条的需要,并使所有的东西 – 插入和uitextview中的所有文本 – 可见而不需要这个滚动条。 注意:我并没有问及防止水平滚动还是不显示滚动条(因此剪切文本) 非常感谢! 对于atomk(UITextView被称为ss) NSLog(@"Content Size Before %f",self.ss.contentSize.width); Logs: 280 CGSize size=self.ss.contentSize; size.width=size.width-50; [self.ss setContentSize:size]; NSLog(@"Content Size After %f",self.ss.contentSize.width); Logs: 230 添加的代码与添加代码之间没有明显的区别,所以出现了问题! (谢谢)