我有一个mainViewController,在其nib文件中我添加了一个信息按钮,其中的操作是在两个子视图之间翻转,子视图A和子视图B.
从mainViewController,在viewDidLoad下,我正在插入子视图A.这里我注意到信息按钮位于子视图A的前面,这很好.
问题在于,当按下位于子视图A的nib文件中的任何按钮时,它们会添加新的子视图,信息按钮保留在前面.
那么,如何在所有父视图堆栈的前面添加这些后面的子视图,以便不显示信息按钮?或者如何隐藏信息按钮?
我试图ViewController
从另一个初始化.这是我第一次编写的代码ViewController
:
#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)
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秒
它让我疯狂... …
我已将另一个视图控制器添加到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
我有一个自定义的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.
我使用 …
我有以下问题:
我有一个主视图对象(继承自UIView),它以4x4布局显示一个包含16个正方形的网格(每个是我创建的继承自UIImageView的类).
这16个正方形中的每一个都是160x160,并且包含不大于30kb的图像(每个正方形的不同图像).但是,图像是500x500(因为它在程序的其他地方以其全尺寸使用),因此通过setFrame方法将其在"square"类中调整为160x160.
通过在应用程序运行时查看Xcode的内存管理功能,我注意到了一些事情:
这里的重点是:为什么每个正方形在加载30kb图像时占用1MB内存?有没有办法减少这个?我已经尝试了一些不同的方式创建图像:[UIImage imageNamed:img]
,[UIImage imageWithContentsFromFile:path]
,[UIImage imageWithData:imgData scale:scale]
,以及未调整的框架.
我有一个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)
原来,
然后,当我开始拖动时,
我希望标签擦除先前的值并在移动拇指时显示当前值.任何帮助表示赞赏.谢谢!
我在我的实现中使用了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) 我的问题如下:
我有一个视图,该视图我添加3子视图(view1
,view2
,view3
按该顺序).视图略有重叠.我想把第一个视图带到顶部,但我无法让它工作.
我尝试添加视图insertSubview:atIndex:
并给出view1
更大的索引,我尝试使用addSubview:
然后使用SubviewToTop,但似乎没有任何工作.
有任何想法吗?
PS我无法以不同的顺序添加视图.它们必须按此顺序添加.
如果我使用for循环;
for(UIView *subview in [myView subviews])
Run Code Online (Sandbox Code Playgroud)
在哪个顺序,带来了子视图?
根据他们增加的顺序或其他什么?
我有一个带有方形图像的故事板中间位于: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"重置"的情况下添加子视图?
addsubview ×10
ios ×6
objective-c ×6
iphone ×5
subview ×2
uitableview ×2
uiview ×2
ios7 ×1
reset ×1
subviews ×1
uiimage ×1
uiimageview ×1
uislider ×1