Tag: uiview

删除特定对象的自动布局约束

我有UIImageViewembedded到UIView 。 我的整个应用程序使用AutoLayout ,但我想删除UIImageView constraints 。 Xcode不会允许我删除constraints ,有没有办法禁用它们的特定对象,将它们设置为零,什么?

在UIViewController中布置和设定子视图的大小

我有一个与UITabController的应用程序,每个选项卡是一个UINavigationController 。 我的一个UINavigationControllers的根是一个UIViewController 。 在视图控制器的视图中,我想要布局一些子视图,但我很困惑,在哪里以及如何以独立于分辨率的方式(即不是硬编码值,如320px,480px,44px等等)进行布局。 )。 当视图完全加载并呈现在垂直iPhone上时,它的高度将是367px = 480 – 20(状态栏) – 44(导航栏) – 49(标签栏)。 在视图控制器内,我目前在viewDidLoad方法中创build了所有的子视图。 但是,在这个方法中,视图的当前高度是460px(self.view.bounds.size.height)。 所以在设置我的子视图时,我无法正确计算任何东西的大小。 在viewWillAppear:方法中,视图确实知道它的大小,但是这意味着每当视图出现时设置和计算子视图的框架(例如,标签更改或从导航堆栈中的子视图控制器popup。 唯一的方法是正确地做到这一点在viewWillAppear:布局viewWillAppear: ? 我试过使用autoresizing属性(父母的autoresizesSubviews & autoresizingMask ),但他们似乎并没有工作!? 这些只有在视图全部设置后才能生效,然后resize(手动/方向更改?)。 如果有人能让我知道为什么autoresizing不起作用,以及如何通过不对任何大小进行硬编码来最好地解决问题,我将不胜感激。

获取UIView相对于其超级视图的超级视图的位置

我有一个UIView,我已经安排了UIButtons。 我想find那些UIButtons的位置。 我知道buttons.frame会给我的立场,但它只会给我立场就其直接superview。 有没有什么方法可以find这些button的位置,就UIButtons superview的超级观点而言? 例如,假设有一个名为“firstView”的UIView。 然后,我有另一个UIView,“secondView”。 这个“SecondView”是“firstView”的子视图。 然后我有UIButton作为“secondView”的子视图。 ->UIViewController.view —>FirstView A ——->SecondView B ————>Button 现在,有什么办法可以find那个UIButton的位置,关于“firstView”?

正确使用intrinsicContentSize和sizeThatFits:在具有自动布局的UIView子类上

我问这个(不知何故)简单的问题只是挑剔,因为有时我担心我可能会做很多UIView的API,尤其是当涉及到自动布局的滥用。 为了使它非常简单,我将举一个例子,假设我需要一个具有图像图标和多行标签的UIView子类; 我想要的行为是我的视图的高度随着标签的高度而变化(以适应内部文本),另外,我正在用Interface Builder构build它,所以我有这样的东西: 有一些约束给图像视图提供了固定的宽度和高度,固定的宽度和位置(相对于图像视图)到标签: 现在,如果我为标签设置了一些文本,我希望视图在高度上resize以适合它,或保持与xib中的高度相同。 在自动布局之前,我总是会这样做: 在CustoView子类文件中,我将重写sizeThatFits:如下所示: – (CGSize) sizeThatFits:(CGSize)size{ //this stands for whichever method I would have used //to calculate the height needed to display the text based on the font CGSize labelSize = [self.titleLabel intrinsicContentSize]; //check if we're bigger than what's in ib, otherwise resize CGFloat newHeight = (labelSize.height <= 21) ? […]

通过触摸到下面的UIViews

我有一个UIView与4个button和另一个UIView在button视图的顶部。 最上面的视图包含一个带有UITapGestureRecognizer的UIImageView 。 我试图创build的行为是,当用户点击UIImageView它在屏幕的右下angular变小,animation变大。 当它很大时,我希望底部视图上的button被禁用,当它很小并且在右下angular时,我希望将触摸传递给button,并使其正常工作。 我几乎在那里,但我不能得到的触摸通过button,除非我禁用顶视图的UserInteractions 。 我有这个在我的initWithFrame:顶视图: // Add a gesture recognizer to the image view UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)]; tapGestureRecognizer.cancelsTouchesInView = NO; [imageView addGestureRecognizer:tapGestureRecognizer]; [tapGestureRecognizer release]; 而我这是我的imageTapped:方法: – (void) imageTapped:(UITapGestureRecognizer *) gestureRecognizer { // Toggle between expanding and contracting the image if (expanded) { [self contractAnimated:YES]; expanded = NO; gestureRecognizer.cancelsTouchesInView […]

使子视图在所有其他视图之前

我目前正在将广告提供商整合到我的应用中。 我希望在广告显示的时候在广告前放置一个淡出的信息,但是完全不成功。 我做了一个function,添加一个子视图到我目前的视图,并试图把它带到前面使用 [self.view bringSubviewToFront:mySubview] 该函数触发通知加载的广告(通知来自adprovider的SDK)。 但是,我的子视图不会在广告前面结束。 我想这是由广告提供商特意制作的,但我希望不pipe。 我目前正在与提供者讨论这是否可以被允许。 但就目前而言,我只想看看是否有可能。 无论如何,我可以强迫我的一个子视图成为最不被任何东西阻挡的最顶层视图吗?

无法在Interface Builder(Xcode 5)中创build子视图的sockets连接

我知道这似乎是其他一些问题的重复,但答案不适合我。 我创build了一个单一的视图应用程序。 在故事板中,我在主视图中添加了一个子视图。 我在我的主视图上有一个标签,在我的子视图上有另一个标签。 我创build了一个UIViewtypes的类,并将其添加为子视图的自定义类。 我可以ctrl-drag我的标签在我的主视图到主视图控制器类。 但是,当我尝试按Ctrl-拖动我的标签在我的子视图到我的自定义类,我无法获得连接发生。 我甚至input了属性信息,并尝试手动build立连接无济于事。 Xcode界面生成器的最新版本已经发生了一些变化。 有人能告诉我我错过了什么吗? 这里几乎没有代码。 我只是testing试图连接sockets与自定义类的子视图。 第一个图像显示我已经设置了自定义类并添加了一个属性,但是我无法build立连接。 第二张图显示主视图标签连接在主视图的控制器中。 第三张图片显示子视图标签没有出口连接。

addSubviewanimation

我有主UIView我显示不同的数据。 然后我把一个button,它显示子视图像这样: – (IBAction) buttonClicked:(id)sender { UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(25,25,50,20)]; UILabel *newLabel = [[UILabel alloc] initWithFrame:CGRectMake(25,25,50,25)]; newLabel.text = @"some text"; [newView addSubview:newLabel]; [self.view addSubview:newView]; [newLabel release]; [newView release]; } newView显示正常,但它不会以任何方式进行animation,它只是立即出现。 如何在newView出现时添加某种animation? 像缩放或向下滑动或类似的东西。 有一些简单的代码?

在UIView上设置alpha将在其子视图上设置alpha,这不应该发生

根据UIVIew @property(nonatomic) CGFloat alpha的文档 此属性的值是一个浮点数,范围为0.0到1.0,其中0.0表示完全透明,1.0表示完全不透明。 该值仅影响当前视图,不影响其embedded的子视图。 我有一个容器视图configuration如下: self.myView.backgroundColor = [UIColor blackColor]; self.myView.alpha = 0.5; [self addSubview:self.myView]; 然后添加子视图到'myView' [myView addSubView anotherView]; anotherView.alpha = 1; NSLog(@"anotherView alpha = %f",anotherView.alpha); // prints 1.0000 as expected 但是“ 另一个视图 ”在屏幕上确实有alpha(它并不像预期的那样是不透明的) 这怎么可能做什么?

确定UIView是否对用户可见?

是否有可能确定我的UIView是否对用户可见? 我的视图作为subview视图被添加到Tab Bar Controller 。 这个视图的每个实例都有一个NSTimer来更新视图。 但是我不想更新用户不可见的视图。 这可能吗? 谢谢