标签: uiview

嵌入在UIView中的UITextField没有响应触摸事件

为什么UITextField嵌入在a中时不会响应触摸事件UIView(它本身嵌入在原始视图控制器的主体中UIView)?

这是代码:

- (void)loadView
{
    self.view = [UIView new];

    UIView *positionalView = [[UIView alloc] initWithFrame:CGRectMake(20, 100, 280, 100)];

    UITextField *usernameField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 280, 50)];
    usernameField.placeholder = @"Full Name";
    usernameField.delegate = self;
    [usernameField addTarget:self action:@selector(textFieldChanged:) forControlEvents:UIControlEventEditingChanged];
    [positionalView addSubview:usernameField];

    UITextField *passwordField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 280, 50)];
    passwordField.placeholder = @"Password";
    passwordField.delegate = self;
    [passwordField addTarget:self action:@selector(textFieldChanged:) forControlEvents:UIControlEventEditingChanged];
    [positionalView addSubview:passwordField];

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

发现很难理解这种行为,因为上面的代码工作正常,如果我只是删除positionalView并直接将文本字段添加到主self.view.

有谁能解释一下?

objective-c uitextfield uiview ios

0
推荐指数
1
解决办法
1828
查看次数

选中时更改自定义UIView背景

UIViews创建了三个自定义圈.当用户点击其中一个时,我想将视图的背景颜色更改为灰色.

最初创建视图时,它是randomColor.如果再次选择视图,我希望这种颜色保持不变.即,再次选择时,从颜色变为灰色,然后变为灰色.

更改视图背景或在我的自定义UIView中添加叠加层以使其变灰的最佳方法是什么?

objective-c uiview uicolor ios

0
推荐指数
1
解决办法
4792
查看次数

在Objective-C(iOS)中覆盖drawRect:(CGRect)rect?

drawRect:(CGRect)rect在制作简单的iOS应用程序时,我重写了该方法.在我正在阅读的书中,界限的定义self.bounds如下所示:

- (void)drawRect:(CGRect)rect
{
    CGRect bounds = self.bounds;

    //rest of drawing code here
}
Run Code Online (Sandbox Code Playgroud)

我注意到在书中,该方法的其余部分甚至没有使用该rect参数并且工作正常.我假设rect会在视图中设置边界,所以我尝试了以下内容:

- (void)drawRect:(CGRect)rect
{
    CGRect bounds = rect;

    //rest of drawing code here
}
Run Code Online (Sandbox Code Playgroud)

(显然,我甚至不需要bounds等同于rect因为我可以rect在方法中直接引用.)我尝试了两种方式并且它们产生了相同的结果.那么,self.boundsrect平等的吗?如果是,我假设rect用于在幕后某处设置当前视图的边界.但如果它们不是,那么rect作为一个甚至不使用它的方法的参数有什么用呢?我忽略了一些明显的东西吗

objective-c uiview bounds ios

0
推荐指数
1
解决办法
1129
查看次数

UIView背景图像没有显示

我在Xcode Images.xcassets中定义了一个bg图像,并希望将其用作视图的背景,但bg保持黑色.我正在使用:

override func viewDidLoad()
{
    super.viewDidLoad();
    view.backgroundColor = UIColor(patternImage: UIImage(named: "background_ipad"));
}
Run Code Online (Sandbox Code Playgroud)

这应该根据SO上的其他一些票据工作,但由于某种原因,背景保持黑色,不显示图像.有什么想法会发生这种情况吗?

cocoa-touch uiview ios swift

0
推荐指数
1
解决办法
2436
查看次数

willMoveToSuperview被调用两次

我正在向视图控制器添加视图。按照这种观点,我已经实现了willMoveToSuperview。现在,我经历了两次调用此函数:

  1. 将视图添加到超级视图时(按预期)
  2. 当当前视图控制器被关闭时(例如,将新的视图控制器推入导航控制器的堆栈中)

这是预期的行为吗?我还能使用什么其他方法来检测当前视图是否仅添加到超级视图?didMoveToSuperview似乎也一样。还是应该使用一个变量来记住该函数的调用频率?

编辑:

现在我想我找到了它被两次调用的原因。我正在使用hide方法关闭视图。它在里面,C#但在这里不重要:

UIView.Animate (
    0.5, // duration
    () => { Alpha = 0; },
    () => { RemoveFromSuperview(); }
);
Run Code Online (Sandbox Code Playgroud)

如果我对此发表评论,它不会被两次调用。如何保存动画并确保只调用一次?

uiview ios

0
推荐指数
1
解决办法
1763
查看次数

阴影没有完全延伸UIView的宽度

我在UIView上应用了一个背景阴影,使它看起来像是在"背景之上"(这是一个MapView),但阴影并没有完全扩展到更宽的iPhone 6和6+屏幕上虽然UIView我正在应用它.

viewDidLoad我使用此代码将阴影应用于UIView:

CALayer *layer = self.view_detailview.layer;
layer.shadowOffset = CGSizeMake(1, 1);
layer.shadowColor = [[UIColor blackColor] CGColor];
layer.shadowRadius = 4.0f;
layer.shadowOpacity = 0.80f;
layer.shadowPath = [[UIBezierPath bezierPathWithRect:layer.bounds] CGPath];
Run Code Online (Sandbox Code Playgroud)

在我的故事板中,我有一个约束设置,强制UIView宽度匹配超级视图宽度,它可以正常工作,没有任何问题或警告.但是当我在6或6+上运行我的应用程序时,我发现阴影没有如此完全延伸:

阴影如何不延伸的屏幕截图

我可以通过将其背景颜色设置为明显的并且看到它填满屏幕来验证UIView是否使用全宽度.

objective-c uiview ios

0
推荐指数
1
解决办法
1129
查看次数

[myView isKindOfClass:[UIView class]]给出了奇怪的结果

我有UITableViewCell,我在其中添加一个UIView内部,我将子视图添加为UIButton,UIImageView.

现在我想访问UIView willDisplayCell.为此我在下面.

NSArray *subviews;
subviews = cell.subviews;

int xxyyzz = 1;
for(id aView in subviews) {
    NSLog(@"aView====%@" , [UIView class]);
    if([aView isKindOfClass:[UIView class]]) {
        NSLog(@"This is UIView... Do what you want to do...");
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行时,我将This is UIView... Do what you want to do...获得所有子视图(即UIButton,UIImageView等).aView====UIView

我相信这是因为,UIView是所有对象的超类.

有没有办法我只能访问我在里面的UIView UITableViewCell...

objective-c uitableview uiview ios

0
推荐指数
1
解决办法
170
查看次数

子视图垂直对齐视图中的自动布局约束

我需要在视图中找到子视图垂直对齐中间,而不使用编程方式使用约束硬编码顶部值150.我希望实现如下所示:

在此输入图像描述

以下是我的代码到目前为止,请指教.

import UIKit

class MainViewController: UIViewController {
 var viewInner:UIView = UIView()
    var viewOuter:UIView = UIView()


    override func viewDidLoad() {
        super.viewDidLoad()

        viewInner.backgroundColor = UIColor.redColor()
        viewOuter.backgroundColor = UIColor.purpleColor()
        viewOuter.frame = CGRectMake(100, 100, 400, 400)

        viewInner.setTranslatesAutoresizingMaskIntoConstraints(false)

        let viewsDictionary = ["viewInner":viewInner]

        viewOuter.addSubview(viewInner)
        self.view.addSubview(viewOuter)

        //Add Constraint

        var constOuterH = NSLayoutConstraint.constraintsWithVisualFormat("H:|-10-[viewInner(>=200)]-10-|", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary)
        var constOuterV = NSLayoutConstraint.constraintsWithVisualFormat("V:|-150-[viewInner(100)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary)

        viewOuter.addConstraints(constOuterH)
        viewOuter.addConstraints(constOuterV)
    }
}
Run Code Online (Sandbox Code Playgroud)

subview uiview ios autolayout

0
推荐指数
1
解决办法
7067
查看次数

UIView animateWithDuration在iOS 8中的行为有所不同

我刚刚从iOS 7.1切换到iOS 8.1.我遇到了以下问题UIView animateWithDuration.图片胜过千言万语,我制作了每个iOS下的行为视频:

iOS 7.1:

https://vimeo.com/113887812

iOS 8.1:

https://vimeo.com/113887814

这是一款iPhone应用程序.

我应该注意到,在发布之前我已经搜索了SO和其他地方.这似乎是一个公认的问题,但我发现的是一些参考"使用基于约束的动画"(我不明白)并关闭自动布局,但没有真正的共识.

我已经尝试了几次刺伤,但没有任何进展.如果有人能指出(或指导我)一个明确的解决方案,我真的很感激.

我应该提一下,该应用程序只能在纵向位置工作,所以我没有考虑在开发过程中自动布局.

所有涉及的视图都是以编程方式创建的,除了滚动条本身.

这是代码.我包括整个方法,这很长,但我真的不明白新iOS中发生了什么变化,所以我是安全的.这个animateWithDuration电话非常深入到这个块中:


-(void) displayDayChart
{
    [self.scroller setBackgroundColor:[UIColor clearColor]];

    UIImage *image = [UIImage imageNamed:@"GrayPaper.png"];
    self.chartView.backgroundColor = [UIColor colorWithPatternImage:image];

    [self.view addSubview:self.scroller];
    [self.scroller setScrollEnabled:YES];

    [self.scroller setContentSize:CGSizeMake(320, 1800)];
    [self.scroller setContentOffset:CGPointMake(0.0, 0.0) animated:YES];

    dayBarArray = [[NSMutableArray alloc]init];
    infoLabelArray = [[NSMutableArray alloc]init];
    timeLabelArray = [[NSMutableArray alloc]init];

    timeFrameDC = - 86400; // 24 hours for this test, selectable in real life

    [self.scroller.subviews makeObjectsPerformSelector: @selector(removeFromSuperview)];

    timeframeDCStart = [NSDate dateWithTimeIntervalSinceNow:timeFrameDC];
    timeframeDCEnd …
Run Code Online (Sandbox Code Playgroud)

iphone animation uiview ios ios8.1

0
推荐指数
1
解决办法
605
查看次数

多个UIView动画

我有一个UIButton,我使用界面构建器放置在屏幕的中心.

我想动画UIButton来上下移动并永远重复动画.

到目前为止,我在didMoveToView中有这个:我正在使用swift.

 UIView.animateWithDuration(3, animations: { () -> Void in
        self.playBtn.transform = CGAffineTransformMakeTranslation(0, 10)
        self.playBtn.transform = CGAffineTransformMakeTranslation(0, -10)
        self.playBtn.transform = CGAffineTransformMakeTranslation(0, -10)
        self.playBtn.transform = CGAffineTransformMakeTranslation(0, 10)
        UIView.setAnimationRepeatCount(-1)
    })
Run Code Online (Sandbox Code Playgroud)

但是它只运行第一行并将按钮向下移动10.

任何帮助,将不胜感激

xcode uiviewcontroller uiview ios swift

0
推荐指数
1
解决办法
1074
查看次数