Tag: uiview

用xib创build一个可重用的UIView(并从storyboard中加载)

好的,在StackOverflow上有很多关于这个的post,但没有一个特别清楚解决scheme。 我想创build一个自定义的UIView与伴随的xib文件。 要求是: 没有单独的UIViewController – 一个完全独立的类 在课堂上的奥特莱斯让我设置/获取视图的属性 我目前的做法是: 覆盖-(id)initWithFrame: -(id)initWithFrame:(CGRect)frame { self = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil] objectAtIndex:0]; self.frame = frame; return self; } 使用-(id)initWithFrame:以编程方式实例化-(id)initWithFrame:在我的视图控制器中 MyCustomView *myCustomView = [[MyCustomView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)]; [self.view insertSubview:myCustomView atIndex:0]; 这工作正常(虽然从来没有调用[super init] ,只是设置对象使用加载的笔尖的内容似乎有点怀疑 – 有build议在这种情况下添加子视图也工作正常)。 不过,我希望能够从storyboard中实例化视图。 所以我可以: 在故事板的父视图中放置一个UIView 将其自定义类设置为MyCustomView 覆盖-(id)initWithCoder: – 我见过的代码最常用的模式如下: -(id)initWithCoder:(NSCoder *)aDecoder { self […]

UICollectionView将图像添加到单元格

我正在使用UICollectionView来显示可能有或没有图像的数据的项目。 我使用的方式是检查图像的URL不是null,然后将一个ImageView添加到单元格。 – (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { if (question.picture != (id)[NSNull null]) { //add AsyncImageView to cell imageView.contentMode = UIViewContentModeScaleAspectFill; imageView.clipsToBounds = YES; imageView.tag = IMAGE_VIEW_TAG; [cell addSubview:imageView]; [[AsyncImageLoader sharedLoader] cancelLoadingImagesForTarget:imageView]; imageView.imageURL = [NSURL URLWithString:question.picture]; } } 对于那些没有图像的单元格,单元格应该如下所示: https : //dl.dropboxusercontent.com/u/5753236/Stackoverflow/good.png 但是,他们中的一些仍然会添加一个带有裁剪图像的ImageView,导致如下所示: https : //dl.dropboxusercontent.com/u/5753236/Stackoverflow/bad.png 我试过使用SDWebImage,但仍然没有解决问题。 另一个问题是当我向下滚动UICollectionView ,会看到一些图像显示为上面显示的图像,然后在加载完成后切换到正确的图像,我不知道是什么导致了问题。 请帮我解决这两个问题,我真的很感激任何帮助。

iOS:禁用子视图的自动旋转

我有支持方向更改的iPad应用程序的嵌套视图层次结构。 它看起来与以下类似。 UIViewController UIView – UIView – UIImageView (disable rotation) – UIImageView – UIView (disable rotation) – UIView – UIView … 我想locking一些子视图的方向,同时允许其他人自动旋转和resize。 我似乎无法弄清楚如何做到这一点。 一种方法似乎是在willAnimateRotationToInterfaceOrientation:手动旋转子视图。 鉴于SDK正在执行旋转,我只是将其撤销,这并不是特别有吸引力。 有没有办法简单地禁用方向更改子视图或其他方法来重构我的层次结构?

创build一个自定义的animation属性

在UIView你可以改变backgroundColouranimation。 在UISlideView你可以改变animation的值。 你可以添加一个自定义属性到你自己的UIView子类,以便它可以animation? 如果我在我的UIView有一个CGPath ,那么我可以通过改变path的绘制百分比来animation它的绘图。 我可以将该animation封装到子类中吗? 即我有一个CGPath创build一个圆的UIView 。 如果圆圈不在那里,则代表0%。 如果圆圈满了,则代表100%。 我可以通过改变绘制path的百分比来绘制任何值。 我还可以通过animationCGPath的百分比和重绘path来animation更改(在UIView子类中)。 我可以在UIView上设置一些属性(即百分比),这样我就可以将变化粘贴到一个UIView animateWithDuration块中,并为path百分比的变化设置animation效果。 我希望我已经解释了我想做的事情。 基本上,我想要做的就是像… [UIView animateWithDuration:1.0 animations:^{ myCircleView.percentage = 0.7; } completion:nil]; 以及给定百分比的圆形path。

在2017年用IBDesignable绘制虚线(而不是虚线)

用UIKit绘制虚线很容易。 所以: CGFloat dashes[] = {4, 2}; [path setLineDash:dashes count:2 phase:0]; [path stroke]; 有没有办法绘制一条真正的虚线? 有任何想法吗? 由于这个问题是真的老了,没有人提出了一个完整的@IBDesignable解决scheme,这里是… 希望它可以帮助某些人打字。 @IBDesignable class DottedVertical: UIView { @IBInspectable var dotColor: UIColor = UIColor.etc @IBInspectable var lowerHalfOnly: Bool = false override func draw(_ rect: CGRect) { // say you want 8 dots, with perfect fenceposting: let totalCount = 8 + 8 […]

使一个button在所有视图控制器中保持不变

我想在我的应用程序的右下angular有一个持久button。 在所有视图转换期间,button应保持静态。 我无法决定添加button的视图。 我知道这个button应该存储在AppDelegate中,但是我不知道将其他视图添加到除窗口之外是否合适。 将其添加到窗口的一个缺点是,当有一个应用程序在后台运行(即电话),添加的状态栏填充将按下窗口。 一般来说,将它添加到窗口似乎是一个hacky的解决scheme – 任何想法?

UIView可以被复制吗?

只需使用这种方式 UIView* view2 = [view1 copy]; //view1 existed 这将导致模拟器无法启动这个应用程序。 尝试保留, UIView* view2 = [view1 retain]; //view1 existed //modify view2 frame etc 对view2的任何修改将适用于view1,我明白,view2与view1共享相同的内存。 为什么不能复制UIView ? 是什么原因?

我怎样才能做关键值观察,并得到一个UIView帧的KVOcallback?

我想观察UIView frame , bounds或center属性的变化。 我怎样才能使用键值观察来实现呢?