标签: addsubview

如何在超级视图的顶部添加子视图的视图?

我有一个mainViewController,在其nib文件中我添加了一个信息按钮,其中的操作是在两个子视图之间翻转,子视图A和子视图B.

从mainViewController,在viewDidLoad下,我正在插入子视图A.这里我注意到信息按钮位于子视图A的前面,这很好.

问题在于,当按下位于子视图A的nib文件中的任何按钮时,它们会添加新的子视图,信息按钮保留在前面.

那么,如何在所有父视图堆栈的前面添加这些后面的子视图,以便不显示信息按钮?或者如何隐藏信息按钮?

iphone objective-c uiviewcontroller uiview addsubview

4
推荐指数
1
解决办法
6693
查看次数

addSubview:方法非常慢

我试图ViewController从另一个初始化.这是我第一次编写的代码ViewController:

MediasViewController.h

#import "MediasVideosViewController.h"

@interface MediasViewController : UIViewController <UIWebViewDelegate>
{
    NSArray*                    videosList; 
    MediasVideosViewController  *mediasVideosViewController;
}

@property (nonatomic, retain) NSArray*  videosList;
@property (nonatomic, retain) MediasVideosViewController*   mediasVideosViewController;
Run Code Online (Sandbox Code Playgroud)


MediasViewController.m:

if (self.mediasVideosViewController == nil)
{
    MediasVideosViewController* mediasVideos = [[MediasVideosViewController alloc] initWithNibName:@"MediasVideosView" bundle:nil];
    self.mediasVideosViewController = mediasVideos;
    self.mediasVideosViewController.videosList = self.videosList;
    [mediasVideos release];
}

NSDate *start = [NSDate date];
[mediasVideosViewController.view addSubview:nil];
NSLog(@"adding nil to mediasVideosViewController.view took %f seconds", [[NSDate date] timeIntervalSinceDate:start]);
Run Code Online (Sandbox Code Playgroud)


控台结果:

将nil添加到mediasVideosViewController.view需要4.261444秒

真的吗?超过4s加nil mediasVideosController?它在1s和5s之间摇摆.

但如果我删除这一行:

self.mediasVideosViewController.videosList = self.videosList;
Run Code Online (Sandbox Code Playgroud)

从MediasViewController.m,我得到一个非常短的加载时间,如:

添加nil到mediasVideosViewController.view花了0.007613秒

它让我疯狂... …

iphone objective-c addsubview

4
推荐指数
1
解决办法
1748
查看次数

当addsview由addsubView呈现时,UIButton不工作

我已将另一个视图控制器添加到viewcontroller视图,

addsubview工作正常,但下一个视图中的按钮操作无效.

崩溃时出错[ModelViewController performSelector:withObject:withObject:]:消息发送到解除分配的实例0xa81d960

在View1:当前视图控制器UsersViewController类中

-(IBAction)openModelView:(id)sender
{
   ModelViewController *modelView= [self.storyboard instantiateViewControllerWithIdentifier:@"ModelViewController"];

    [self.view addSubview:modelView.view];
}
Run Code Online (Sandbox Code Playgroud)

在View 2 ModelViewController类中

-(IBAction)dismissModelView:(id)sender
{
    NSLog(@"ddddddde");
    //[self.view removeFromSuperview];
    [self.view removeFromSuperview];
}
Run Code Online (Sandbox Code Playgroud)

使用presentViewConroller [self presentViewController:modelView animated:NO completion:nil]*工作得很好*,

我需要在背景中显示第一个视图,部分透明

iphone objective-c uiviewcontroller addsubview presentmodalviewcontroller

4
推荐指数
1
解决办法
1811
查看次数

无法在iOS7上看到动态子视图(在iOS6上工作)

我有一个自定义的TableViewCell.在单元格中,我将两个交叉图标(使用unicode)添加到单元格的两侧.当用户平移单元格时,它将在侧面显示十字图标.

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // add a cross
        _crossLabel = [self createCueLabel];
        _crossLabel.text = @"\u274C";
        _crossLabel.textAlignment = NSTextAlignmentLeft;
        // none of the following code works
        [self insertSubview:_crossLabel aboveSubview:self];
        [self insertSubview:_crossLabel belowSubview:self];
        [self addSubview:_crossLabel];

        _crossLabel2 = [self createCueLabel];
        _crossLabel2.text = @"\u274C";
        _crossLabel2.textAlignment = NSTextAlignmentLeft;
        [self addSubview:_crossLabel2];

        // add a pan recognizer
        UIGestureRecognizer* recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
        recognizer.delegate = self;
        [self addGestureRecognizer:recognizer];
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

我使用上面的代码来实现这一点.并且_crossLabel确实添加了Custom TableView Cell.

我使用 …

objective-c uitableview addsubview ios ios7

4
推荐指数
1
解决办法
5511
查看次数

ios设备上图像的内存管理性能不佳

我有以下问题:

我有一个主视图对象(继承自UIView),它以4x4布局显示一个包含16个正方形的网格(每个是我创建的继承自UIImageView的类).

这16个正方形中的每一个都是160x160,并且包含不大于30kb的图像(每个正方形的不同图像).但是,图像是500x500(因为它在程序的其他地方以其全尺寸使用),因此通过setFrame方法将其在"square"类中调整为160x160.

通过在应用程序运行时查看Xcode的内存管理功能,我注意到了一些事情:

  1. 这些方块中的每一个在添加到主视图对象时,会将应用程序的内存使用量增加1MB.这不会在实例化时发生,但只有在主视图对象的[self addSubview:square]添加它们时才会发生.
  2. 如果我对所有方块使用相同的图像,则内存增加最小.如果我在没有任何图像的情况下初始化方形对象,则增加基本上为零.
  3. 相同的应用程序,当在模拟器中运行时,使用它在实际设备上执行的内存的1/6.

这里的重点是:为什么每个正方形在加载30kb图像时占用1MB内存?有没有办法减少这个?我已经尝试了一些不同的方式创建图像:[UIImage imageNamed:img],[UIImage imageWithContentsFromFile:path],[UIImage imageWithData:imgData scale:scale],以及未调整的框架.

memory-management uiimageview uiimage addsubview ios

4
推荐指数
1
解决办法
1369
查看次数

在UISlider的拇指图像上连续更改UILabel的值

我有一个UISlider(最小1,最大10).我希望它的拇指UILabel放在它的顶部,在移动UISlider拇指时不断更新和更改其文本.因此,我从中抓取了拇指图像UISlider并添加了一个UILabel,但标签似乎覆盖了自己而没有在拇指移动后删除之前的值.

- (IBAction)SnoozeSliderValueChanged:(id)sender {

    UIImageView *handleView = [_snoozeSlider.subviews lastObject];
    UILabel *label = [[UILabel alloc] initWithFrame:handleView.bounds];
    label.text = [NSString stringWithFormat:@"%0.0f", self.snoozeSlider.value];
    label.backgroundColor = [UIColor clearColor];
    label.textAlignment = NSTextAlignmentCenter;
    [handleView addSubview:label];

}
Run Code Online (Sandbox Code Playgroud)

原来,

在此输入图像描述

然后,当我开始拖动时,

在此输入图像描述

我希望标签擦除先前的值并在移动拇指时显示当前值.任何帮助表示赞赏.谢谢!

iphone objective-c uislider addsubview ios

4
推荐指数
1
解决办法
4047
查看次数

iPhone:向Cell ContentView添加子视图会在滚动时覆盖单元格文本

我在我的实现中使用了Cell.ContentView来自定义单元格内容.它工作正常,但唯一的问题是,当我有很多单元格并且我上下滚动它们时,单元格内容会被覆盖到单元格中,只是隐藏后跟可见.假设我向上滚动第一个单元格然后再次将其取下,最后一个单元格的内容将被覆盖在第一个单元格上!

我对此进行了足够的调试,但找不到确切的解决方案.我尝试检查Cell.ContentView.SubViews计数,如果它为0则只添加其他子视图.直到我上下滚动它才会显示任何单元格内容但是一旦内容出现,它就不会覆盖......有点奇怪.. !! 我还确保我正在使用正确的重复使用单元格.以下是我的代码,它将子视图添加到单元格的内容视图中.请让我知道如何摆脱这个问题.

PS:不要担心我所做的变量和计算.假设它返回正确的值.:)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    NSInteger totalAvailableSpace = IPHONE_DISPLAY_WIDTH - iconSize - accesorySize - 10;
    NSInteger lableHeight = [[cellDetails objectForKey:@"TableItemTextFontSize"] intValue] * 2 + 10;

    UILabel *textLabel = nil;
    textLabel = [[[UILabel alloc] initWithFrame:CGRectMake(iconSize+12, self.tableCellHeight/2 - lableHeight/2, totalAvailableSpace * 0.8, lableHeight)] autorelease];
    textLabel.numberOfLines = 2;
    textLabel.lineBreakMode = UILineBreakModeWordWrap;
    textLabel.textAlignment = …
Run Code Online (Sandbox Code Playgroud)

iphone uitableview addsubview

3
推荐指数
1
解决办法
7220
查看次数

将之前添加的视图添加到前面

我的问题如下:

我有一个视图,该视图我添加3子视图(view1,view2,view3按该顺序).视图略有重叠.我想把第一个视图带到顶部,但我无法让它工作.

我尝试添加视图insertSubview:atIndex:并给出view1更大的索引,我尝试使用addSubview:然后使用SubviewToTop,但似乎没有任何工作.

有任何想法吗?

PS我无法以不同的顺序添加视图.它们必须按此顺序添加.

subview uiview addsubview ios

3
推荐指数
1
解决办法
8014
查看次数

UIView子视图的顺序?

如果我使用for循环;

for(UIView *subview in [myView subviews])
Run Code Online (Sandbox Code Playgroud)

在哪个顺序,带来了子视图?

根据他们增加的顺序或其他什么?

subview addsubview ios subviews

3
推荐指数
1
解决办法
5260
查看次数

iOS视图在addSubview上重置

我有一个带有方形图像的故事板中间位于:280,140(垂直)当应用程序启动时,我可以通过按下按钮移动此imageView.我使用以下方法移动imageView:

    _mainImage.frame = CGRectMake(_mainImage.frame.origin.x + 2, _mainImage.frame.origin.y, _mainImage.frame.size.width, _mainImage.frame.size.height);
Run Code Online (Sandbox Code Playgroud)

在应用程序运行时,我不断向mainView添加新的imageView:

UIImageView *imgView;
imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, yCoordinate, 50, 10)];
imgView.backgroundColor = [UIColor whiteColor];
[self.view addSubview:imgView];
Run Code Online (Sandbox Code Playgroud)

每当我调用此代码时,我放置在中间并移动的方形图像视图将被设置回其起始位置.看起来每次调用addSubview时mainView都会"重置".有没有办法在没有mainView"重置"的情况下添加子视图?

objective-c reset addsubview ios

3
推荐指数
1
解决办法
936
查看次数