精华内容
下载资源
问答
  • ios uiview动画In this tutorial, we’ll be animating our UI Views in various ways in the iOS Application. 在本教程中,我们将在iOS应用程序中以各种方式对UI视图进行动画处理。 iOS UIView动画 (iOS UIView ...

    ios uiview动画

    In this tutorial, we’ll be animating our UI Views in various ways in the iOS Application.

    在本教程中,我们将在iOS应用程序中以各种方式对UI视图进行动画处理。

    iOS UIView动画 (iOS UIView Animations)

    Animations are a vital component in building beautiful UIs.

    动画是构建漂亮的UI的重要组成部分。

    Following are some of the basic properties of a view that can be animated:

    以下是可以设置动画的视图的一些基本属性:

    • center

      中央
    • alpha

      α
    • frame

    • bounds

      界线
    • transform

      转变
    • backgroundColor

      背景颜色
    • contentStretch

      contentStretch

    The syntaxes for UIView Animations are:

    UIView动画的语法为:

    UIView.animate(withDuration:, animations:)
    UIView.animate(withDuration:, delay:, animations:)
    UIView.animate(withDuration:, delay:, options:, animations:)
    UIView.animate(withDuration:, delay:, options:, animations:, completion:)
    UIView.animate(withDuration: 5.0, animations: {
                self.myView.alpha = 0
                print("animations")
            })

    With Delay:

    有延迟:

    UIView.animate(withDuration: 5.0, delay: 2.0, animations: {
                self.myView.alpha = 0
                print("animations")
            })

    Notice that there is a two second delay:

    请注意,有两秒钟的延迟:

    With Options

    有选项

    UIView.animate(withDuration: 5.0, delay: 2.0, options: [.autoreverse], animations: {
                self.myView.alpha = 0
                print("animations")
            })

    There are plenty of options available that we will see later in this tutorial. The above one auto-reverses the animation once before vanishing it off.

    有很多可用的选项,我们将在本教程的后面部分看到。 上面的动画会在动画消失之前自动反转一次。

    With completion
    A Completion handler closure gets called when the animation is completed.
    We can add a completion handler as shown below:

    随着完成
    动画完成后,将调用完成处理程序关闭。
    我们可以添加一个完成处理程序,如下所示:

    UIView.animate(withDuration: 5.0, animations: {
                self.myView.alpha = 0
                print("animations")
            },completion:
                {finished in
                    print("Is finished? \(finished)")
                    UIView.animate(withDuration: 1.0, animations:{
                    self.myView.alpha = 0.5
                    },completion: nil)
            })

    In this, we’ve chained another animation when the first is completed.

    ios basic animation with completion handler

    在此,当第一个动画完成时,我们链接了另一个动画。

    A completion is a trailing closure. We can enhance the readability of the code by calling the completion outside function as shown below:

    完成是尾随的结束。 我们可以通过调用complete外部函数来增强代码的可读性,如下所示:

    UIView.animate(withDuration: 5.0, animations: {
                self.myView.alpha = 0
                print("animations")
            }){finished in
                print("Is finished? \(finished)")
                UIView.animate(withDuration: 1.0, animations:{
                    self.myView.alpha = 0.5
                })
            }

    Note: finished is a boolean.

    注意:完成是布尔值。

    UIView.animateWithDuration(5.0, animations: {        
        println("animations")
    }, completion: { finished in          
        println("completion")
    })

    This is because no UIView was animated.

    这是因为没有UIView具有动画效果。

    You must call a view and animate it in the animation block.

    您必须调用视图并在动画块中为其设置动画。

    Let’s open up our Main.storyboard in our new XCode Project.
    Following is the UI we’ve created for the next three basic animations that we’ll perform:

    让我们在新的XCode项目中打开Main.storyboard。
    以下是我们为接下来将要执行的三个基本动画创建的UI:

    Create an IBAction in the ViewController.swift for each of the other Buttons similarly.

    类似地,在ViewController.swift中为其他每个Button创建一个IBAction。

    In order to set the Button text in two lines, set the line break to word wrap. To goto the next line press Option + Control + Enter while typing the title.
    为了将按钮文本设置为两行,请将换行符设置为自动换行。 要转到下一行,请在键入标题时按Option + Ctrl + Enter。

    动画色彩 (Animating Color)

    @IBAction func animateColor(_ sender: Any) {
    
        UIView.animate(withDuration: 1, animations: {
            self.myView.backgroundColor = UIColor.black
        }, completion: nil)
    
    }

    动画运动 (Animate Movement)

    Here we change the position of the view using the frame origin as the reference.
    A negative in x-direction means it goes to the left.
    A negative in the y-direction means it goes to the top.

    在这里,我们以帧原点为参考来更改视图的位置。
    x方向为负表示它向左移动。
    y方向上的负值表示它到达顶部。

    @IBAction func animateMovement(_ sender: Any) {
        UIView.animate(withDuration: 1, animations: {
            self.myView.frame.origin.x -= 40
        }, completion: nil)
        
    }

    动画大小 (Animate Size)

    Here we change the frame size width and height.

    在这里,我们更改框架大小的宽度和高度。

    @IBAction func animateSize(_ sender: Any) {
        UIView.animate(withDuration: 1, animations: {
            self.myView.frame.size.width += 40
            self.myView.frame.size.height += 10
        }){ finished in
            UIView.animate(withDuration: 1, animations: {
                self.myView.frame.size.width -= 40
                self.myView.frame.size.height -= 10
            })
        }
    }

    一起动画 (Animate Together)

    Here we’ll animate the size, color and position of the View together.

    在这里,我们将为“视图”的大小,颜色和位置设置动画。

    @IBAction func animateAllTogether(_ sender: Any) {
        
        if(animationRunning){
            self.myView.layer.removeAllAnimations()
            animationRunning = !animationRunning
        }
        else{
            animationRunning = !animationRunning
        UIView.animate(withDuration: 1, animations: {
            self.myView.backgroundColor = UIColor.green
            self.myView.frame.size.width += 50
            self.myView.frame.size.height += 20
            self.myView.center.x += 20
        }) { _ in
            UIView.animate(withDuration: 1, delay: 0.25, options: [.autoreverse, .repeat], animations: {
                self.myView.frame.origin.y -= 20
            })
        }
        }
    }

    animateRunning is a boolean variable that is used to toggle the UIView Animation.
    To stop the animation we do : self.myView.layer.removeAllAnimations().
    We’ve set the options to auto-reverse and repeat forever.

    animateRunning是一个布尔变量,用于切换UIView动画。
    要停止动画,我们要做: self.myView.layer.removeAllAnimations()
    我们将选项设置为自动反向并永久重复。

    The output of the above 4 basic animations is given below:

    ios ui view animation basic

    上面4个基本动画的输出如下:

    Next, we’ll look at Transform Animations and use the various options.

    接下来,我们将看一下“变换动画”并使用各种选项。

    变换动画 (Transform Animations)

    We can transform the scale, rotate the views to show animations.

    我们可以变换比例,旋转视图以显示动画。

    Following is the setup from the storyboard:

    以下是情节提要中的设置:

    In the above storyboard, we’ve linked all the 4 buttons to the same IBAction function. The same function would be triggered when any of these buttons is clicked. We can set a button tag to identify the buttons from each other.

    在上面的故事板上,我们已将所有4个按钮链接到相同的IBAction函数。 单击这些按钮中的任何一个将触发相同的功能。 我们可以设置一个按钮标签来相互识别按钮。

    There are 4 main types of animation curves:

    动画曲线有4种主要类型:

    • curveEaseIn

      curveEaseIn
    • curveEaseOut

      curveEaseOut
    • curveEaseInOut

      curveEaseInOut
    • curveLinear

      curveLinear

    Note: They are called curves since their animation graphs are curves!

    注意:因为它们的动画图是曲线,所以它们称为曲线!

    To Transform animations we do:

    要转换动画,我们要做:

    self.optionsView.transform = CGAffineTransform(scaleX: 0, y: 0)
                
                UIView.animate(withDuration: 1.0, delay: 0.0, options: [.curveEaseIn], animations: {
                    self.optionsView.transform  = .identity
                })

    CGAffineTransform sets the intial scale.
    self.optionsView.transform = .identity transforms the view to it’s original scale.

    CGAffineTransform设置初始比例。
    self.optionsView.transform = .identity将视图转换为其原始比例。

    We can set each of the options in their respective button tags as shown below:

    我们可以在各自的按钮标签中设置每个选项,如下所示:

    The output of the application in action for the above transform animation is given below:

    下面给出了上述变换动画的实际应用程序输出:

    Spring动画 (Spring Animations)

    Spring Animations behave like real-life springs. With their damping velocity and elasticity, they make a cool animation.

    弹簧动画的行为类似于现实中的弹簧。 凭借其衰减速度和弹性,他们制作了很酷的动画。

    Spring Animations can be set by adding the following syntax for the UIView Animations animate function.

    可以通过为UIView Animations animate功能添加以下语法来设置Spring Animations。

    UIView.animate(withDuration: 1, delay:, usingSpringWithDamping:, initialSpringVelocity:, options: [], animations: , completion:)

    usingSpringWithDamping requires a number between 0 and 1. It represents the damping ratio. The higher the number the springier the animation will be.
    Higher the intialSpringVelocity, higher the intial momentum.

    usingSpringWithDamping需要一个介于0和1之间的数字。它表示阻尼比。 数字越高 ,动画越弹性
    初始弹簧速度越高,初始动量越高。

    Again we’re creating a StackView with 4 Buttons for different use cases in our Main.storyboard:

    ios ui view animation spring setup

    再次,我们在Main.storyboard中为不同的用例创建一个带有4个按钮的StackView:

    The function springAnimationWithOptions is triggered everytime when any of the buttons is clicked:

    每次单击任何一个按钮时,都会触发springAnimationWithOptions函数:

    @IBAction func springAnimationWithOptions(_ sender: UIButton!) {
            
            if(sender.tag == 1)
            {
                self.optionsView.transform = CGAffineTransform(scaleX: 0, y: 0)
                UIView.animate(withDuration: 1, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 0, options: .curveEaseInOut, animations: {
                    self.optionsView.transform = .identity
                }, completion: nil)
            }
            else if(sender.tag == 2)
            {
                self.optionsView.transform = CGAffineTransform(scaleX: 0, y: 0)
                UIView.animate(withDuration: 1, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: .curveEaseInOut, animations: {
                    self.optionsView.transform = .identity
                }, completion: nil)
            }
            else if(sender.tag == 3)
            {
                self.optionsView.transform = CGAffineTransform(scaleX: 0, y: 0)
                UIView.animate(withDuration: 1, delay: 0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0, options: .curveEaseInOut, animations: {
                    self.optionsView.transform = .identity
                }, completion: nil)
            }
            else if(sender.tag == 4)
            {
                self.optionsView.transform = CGAffineTransform(scaleX: 0, y: 0)
                UIView.animate(withDuration: 1, delay: 0, usingSpringWithDamping: 0.3, initialSpringVelocity: 0.8, options: .curveEaseInOut, animations: {
                    self.optionsView.transform = .identity
                }, completion: nil)
            }
        }

    The output is:

    ios ui view animation spring output

    输出为:

    变换动画–平移,缩放,旋转 (Transform Animation – Translate, Scale, Rotate)

    We can scale translate and rotate in the following way:

    我们可以按以下方式缩放平移和旋转:

    let translate = CGAffineTransform(translationX: 120, y: 120)
    let rotate = CGAffineTransform(rotationAngle: 360)
    let scale = CGAffineTransform(scaleX: 2, y: 2)

    We can also chain together each of these by using the concatenating method:

    我们还可以通过使用串联方法将每个链接在一起:

    self.view.transform = translate.concatenating(rotate)

    Our Main.storyboard again hooks the 4 buttons for the use cases to a common IBAction button click function:

    我们的Main.storyboard再次将用例的4个按钮挂钩到一个通用的IBAction按钮单击功能:

    The code for the STRAnimationWithOptions function is given below:

    STRAnimationWithOptions函数的代码如下:

    @IBAction func STRAnimationWithOptions(_ sender: UIButton!) {
            
            if(sender.tag == 1)
            {
                let scale = CGAffineTransform(scaleX: 2, y: 2)
                self.optionsView.transform = scale
                UIView.animate(withDuration: 1, delay: 0, options: .curveEaseInOut, animations: {
                    self.optionsView.transform = .identity
                }, completion: nil)
            }
            else if(sender.tag == 2)
            {
                let translate = CGAffineTransform(translationX: -120, y: -120)
                self.optionsView.transform = translate
                UIView.animate(withDuration: 1, delay: 0, options: .curveEaseInOut, animations: {
                    self.optionsView.transform = .identity
                }, completion: nil)
            }
            else if(sender.tag == 3)
            {
                let rotate = CGAffineTransform(rotationAngle: 360)
                self.optionsView.transform = rotate
                UIView.animate(withDuration: 3, delay: 0, options: .curveEaseInOut, animations: {
                    self.optionsView.transform = .identity
                }, completion: nil)
            }
            else if(sender.tag == 4)
            {
                let rotate = CGAffineTransform(rotationAngle: 360)
                let translate = CGAffineTransform(translationX: -120, y: -120)
                let scale = CGAffineTransform(scaleX: 2, y: 2)
                self.optionsView.transform = rotate.concatenating(translate).concatenating(scale)
                UIView.animate(withDuration: 3, delay: 0,usingSpringWithDamping: 0.8,initialSpringVelocity: 0.5, options: [.autoreverse,.curveEaseInOut], animations: {
                    self.optionsView.transform = .identity
                }, completion: nil)
            }
        }

    In the last one, we’ve added spring animation as well. Check out the output of the Scale Rotate Translate Transform Animations.

    在上一个中,我们还添加了spring动画。 检出“缩放旋转平移变换动画”的输出。

    过渡选项 (Transition Options)

    Besides the curved animation option discussed above there are a few more.

    除了上面讨论的弯曲动画选项以外,还有其他一些选项。

    To create transition animations we do the following in Swift:

    要创建过渡动画,我们在Swift中执行以下操作:

    UIView .transition(with: self.myTextField, duration: 4, options: .transitionCrossDissolve,
                                   animations: {
                                    self.myTextField.textColor = UIColor.red
                })

    Let’s see some of the important transition options by example.

    让我们以示例的方式查看一些重要的过渡选项。

    First we need to set up the last part of our ViewController in the Main.storyboard:

    ios ui view animation transtition

    首先,我们需要在Main.storyboard中设置ViewController的最后一部分:

    We’ve created a UITextField and linked it to the ViewController.swift along with the three buttons.

    我们创建了一个UITextField并将其与三个按钮一起链接到ViewController.swift。

    The code for the transitionAnimationWithOptions function is given below:

    下面给出了transitionAnimationWithOptions函数的代码:

    @IBAction func transitionAnimationWithOptions(_ sender: UIButton!) {
            
            if(sender.tag == 1)
            {
                UIView .transition(with: self.myTextField, duration: 4, options: .transitionCrossDissolve,
                                   animations: {
                                    self.myTextField.textColor = UIColor.red
                }){finished in
                    self.myTextField.textColor = UIColor.white
                }
            }
            else if(sender.tag == 2)
            {
                UIView .transition(with: self.myTextField, duration: 4, options: .transitionFlipFromRight,
                                   animations: {
                                    self.myTextField.textColor = UIColor.red
                }){finished in
                    self.myTextField.textColor = UIColor.white
                }
            }
            else if(sender.tag == 3)
            {
                UIView .transition(with: self.myTextField, duration: 4, options: .transitionCurlUp,
                                   animations: {
                                    self.myTextField.textColor = UIColor.red
                })
            }
        }

    The output of the above application in action is given below:

    上面应用程序的输出如下:

    Wow, that’s the best for the last!

    哇,这是最后的最好!

    This brings an end to this tutorial. You can download the full XCode project with all the animations from the link below:

    本教程到此结束。 您可以从下面的链接下载完整的XCode项目以及所有动画:

    翻译自: https://www.journaldev.com/22104/ios-uiview-animations

    ios uiview动画

    展开全文
  • iOS UIView

    2016-03-14 22:00:13
    iOS UIView及其子类

    UIView是负责在iOS里面显示一切内容的容器,UIView是所有View视图的父类,包括UIWindow,也是UIView的子类。

    1.UIView 重要属性

    frame // 指定视图的坐标和大小,相对于父视图的坐标系;
    bounds // 边界属性,定义视图的位置和大小,是相对于自身的坐标系;
    center // frame的中心坐标,相对于父视图的坐标系;
    alpha // 透明度;
    backgroundColor // 视图的背景颜色;
    userInteractionEnabled // 是否可以响应点击(父视图如果不接受用户交互事件,子视图同样也不会接受用户事件);
    autouresizingMask // 如何调整自己的大小,当superView的bounds发生改变时;
    autouresizsSubviews // 是否自动调整subviews的大小,默认为YES;
    clipsToBounds // 子视图超出父视图bounds后,是否裁减,默认为false;
    // (如果子视图超出了父视图的范围,默认情况下在界面上子视图会全部显示出来,但超出的范围不会接受到用户事件)

    每个view都有一个tag属性,可以通过它来快速定位某个subview;

    -(UIView *)viewWithTag:(NSInteger)tag;
    -(void)setTag:(NSInteger)tag;

    View圆角

    view.layer.cornerRadius = 5;  // 圆角半径
    view.layer.masksToBounds = YES;  // 裁剪layer多余的部分

    如果在代码中设置圆角无效,可参考:在initWithCoder中,设置view.layer.masksToBounds无效,则还需要在awakeFromNib中再设置;

    2.UIView 常见方法

    initWithFrame:(CGRect)frame // 初始化
    addSubview: // 添加视图
    insertSubview:atIndex: // 插入视图
    insertSubview:aboveSubview:
    insertSubview:belowSubview:
    sendSubviewToBack:
    exchangeSubviewAtIndex:withSubviewAtIndex:
    removeFromSuperview: // 移除视图
    setNeedsLayout: // 强制重新布局子控件(此方法会自动调用layoutSubviews)
    [view performSelector: withObject: afterDelay: ]; // 延迟一段时间执行某个方法;
    [view.subviews makeObjectsPerformSelector: withObject:]; // 让view的全部subview执行某一个方法,selector(方法名);
    -(void)bringSubviewToFront:(UIView *)view // 把某一个view(v)显示在父view的最上层;

    3.initWithCoder和awakeFromNib

    当UIView从xib或者storyboard中创建好并且可以使用该控件时,会调用awakeFromNib方法;因为从xib或者storyboard中创建,其实就是从文件中创建,即是通过归档文件来创建UIView的,所有也会执行initWithCoder方法,并且是在awakeFromNib方法前执行;如果使用自定义view,则在initWithCoder方法里面需要调用[super initWithCoder];
    在initWithFrame和initWithCoder两个方法里面都不能准确获取View的frame,如果要对子view进行frame设置,则需要在layoutSubviews方法里面来对subview设置frame或其它属性;
    当UIView是通过代码创建的时候,也会调用initWithFrame方法;

    4.代理delegate

    UIView控件的代理属性的标识必须为weak;因为本身把一个UIView添加到一个controller,该controller就持有了该对象的强引用,如果再把控件的delegate属性也使用strong的话,就会造成控件与控制器的循环引用,从而导致内存问题;
    但并不是所有的代理都必须使用weak,其它情况下是可以使用strong的;

    UILabel

    numberOfLines = 0; // label会自动换行,根据需要显示的内容来决定行数;
    lineBreakMode = NSLineBreakByWordWrapping; // 换行模式;

    通常两个属性要同时设置;

    UITextField(只有一行)

    placeholder //  hint 提醒
    keyboardType // 键盘类型
    secureTextEntry = YES; // 密码输入
    contentVerticalAlignment; // 垂直对齐方式(父类的属性);
    delegate // 用户交互事件,是一个协议,可以实现里面的方法来监听输入情况等;
    Clear Button;  // 编辑时显示在右侧的删除按钮;
    inputView;  // 指定当UITextField获取焦点之后,弹出的输入视图;
    inputAccessoryView;  // UITextField获取到焦点之后的辅助视图(可用于自定义键盘);
    [textField becomeFirstResponder]; //  手动打开键盘
    // 设置内容对齐方式(此属性是UIControl的属性)
    textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;  // 居中
    UIImageView *leftView;
    leftView.contentMode = UIViewContentModeCenter;  // 设置leftView的内容居中;
    textField.leftView = leftView;  // leftView需要设置size属性;
    textField.leftViewMode = UITextFieldViewModeAlways;  // 左边的view永远显示;

    监听文字改变,可以使用delegate代理,也可以通过监听通知:

    UITextViewTextDidChangeNotification;

    UITextView

    hasText:是否包含文字
    text属性只包括普通文本,attributedText包括显示在textView里面的所有内容;
    // 设置字符选中范围
    textview.selectedRange = NSMakeRange(20, 10);
    // 算出选中的字符范围的边框
    NSArray *rects = [textview selectionRectsForRange:textview.selcetedTextRange];
    for(UITextSelectionRect *rect in rects){
    }
    

    UIButton

    Highlighted Adjusts Image  // 禁止高亮状态image调整;
    adjustsImageWhenHighlighted
    currentTitle;  // 当前状态下的文字;
    selected = YES | NO

    如果要去除UIButton的选中状态,可继承UIButton重写setHighlighted方法,置空该方法,不调用[super setHighlighted];
    UIButton默认图标显示在左边,如果需要显示在其它位置,需要自定义UIButton并重写下面两个方法。

    titleRectForContentRect:(CGRect)contentRect  // 用于返回按钮上标题的位置;
    imageRectForContentRect:(CGRect)contentRect  // 返回图标在按钮上的位置;

    按钮内容对齐方式

    btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; // 左对齐

    UISlider

    UISlider是iOS中的滑块,多见于控制音量,进度等(官方指定大小为34);
    UISlider和UIButton都是继承自UIControl的子类,能响应事件,通常我们使用valueChanged这种eventType来控制交互事件;有三个常用属性最大值,最小值,以及当前的值;
    1.attribute

    minimumValueImage  // 指定滑块左边的横线为图片(同理右边为max,下不复述)
    minimumTrackTintColor  // 指定滑块左边的横线颜色
    thumbTintColor  // 滑块高亮状态颜色
    currentThumbImage  // 滑块thumbImage

    2.function

    -minimumTrackImageForState:  //
    -thumbImageForState:  // 
    -setThumbImage:forState:  //

    UIToolBar

    UIToolbar 上只能添加UIBarButtonItem;

    UIDatePicker

    常用属性

    datePickerMode; // 日期模式;
    local; // 显示语言;

    设置选择改变监听事件

    [datePicker addTarget:self action:@selector(test:) forControlEvents:UIControlEventValueChanged];

    UIImageView

    animationImages;  // 一个动画图片数组,UIImageView可以播放多张图片;
    animationDuration;  // 动画时长,默认为1s;
    animationRepeatCount;  // 动画重复次数;
    // 注意:播放多张图片,需要调用startAnimating来播放;
    highlightImage;  // 

    UIScrollView

    1.UIScrollView无法滚动的可能原因

    没有设置contentSize;
    scrollEnabled = NO;
    没有接收到触摸事件:userInteractionEnabled = NO;
    没有取消autolayout功能,(要想scrollview滚动),在xcode5.x下必须取消autolayout;

    2.重要属性

    CGPoint contentOffset;  // 内容相对于UIScrollView左上角的偏移量
    UIEdgeInsets contentInset;  // 内容的内边距
    CGSize contentSize;  // 内容的真实大小,某个方向上不希望滚动,则可以把该方向上的contentSize值设置为0
    Bool bounces;  // 弹簧效果
    Bool ScrollEnabled;  // 是否能滚动
    Bool showHorizontalScrollIndicator;  // 显示水平滚动条
    alwaysBounceVertical = YES;  // 垂直方向上有弹簧效果

    3.通过UIScrollView实现缩放
    向UIScrollView中添加内容(也就是指要进行缩放的内容)
    设置缩放比例,最大、最小比例
    通过代理监听缩放事件,在缩放事件中返回UIScrollView的某个子控件(这个子控件就是告诉UIScrollView对这个控件进行缩放)

    4.分页
    通过设置UIScrollView的pagingEnabled为YES,UIScrollView会被分成多个独立页面,分页的每一页宽度为UIScrollView的宽度;通常会配合UIPageControl增加分页效果;

    5.滚动/自动滚动
    通过定时器(NSTimer)实现自动滚动

    UIAlertView

    如果想要一个alertView显示文本框,则需要修改alertView的样式;
    alertView.alertViewStyle = UIAlertViewStylePlainTextInput;
    [alertView textFieldAtIndex:0]; // 根据索引获取alertView中指定的某个文本框

    UIActionSheet

    UIActionSheet *sheet = [[UIActionSheet alloc]initWithTitle:@"title" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:@"确定" otherButtonTitles: nil];
    [sheet showInView:];

    UIActivityIndicatorView

    默认情况下不会滚动,如果需要它自动滚动,需要勾选Behavior的Animating属性;

    UIPageControl

    numberOfPages;  // 页数
    currentPage;  // 当前页
    hidesForSinglepage;  // 只有一页时,是否需要隐藏页码指示器
    pageIndicatorTintColor;  // 页码指示器颜色
    currentPageIndicatorTintColor;  // 当前页码指示器颜色

    通过KVC改变_currentPageImage和_pageImage;

    UIPickerView

    UIPickerView有默认的frame属性,它的高度是固定的;
    常用代理方法:

    -(NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView;
    // 返回列数;
    -(NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;
    // 返回指定component列的行数;
    -(NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;
    // 指定的某行某列需要显示的字符串内容;
    - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component;
    // 某一行被选中的回调事件,只有通过手指选中某一行的时候才会被调用;
    [pickerView selectRow:1 inComponent:0 animated:YES];  // 使pickerView主动选中某一行,该方法不会触发pickerView:didSelectRow:inComponent:;
    [pickerView selectedRowInComponent:0];  // 获取某一列的当前被选中行;
    [pickerView reloadAllComponents];  // 重新加载全部数据;
    [pickerView reloadComponent:];  // 重新加载指定列的数据;
    

    自定义UIPickerView的指定行和指定列的View,最后一个参数是当有可以重用的view的时候,会把该view自动传回来;自定义UIView时,可以不指定它的宽高,它有默认的宽高;

    -(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view;
    - (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component  // 返回指定的某一列的行高
    展开全文
  • IOS UIView

    2019-05-15 22:11:53
    两种拿到控件的方式 一个是连线 一个是Tag day1-18(重要)UIView的常见方法 Tag来标识一个属性 sangg三个按钮点击执行公共方法 然后又有各自的方法 但是 ...

    两种拿到控件的方式  一个是连线 一个是Tag  day1-18(重要)UIView的常见方法

    Tag来标识一个属性

    sangg三个按钮点击执行公共方法  然后又有各自的方法

    但是

    展开全文
  • 本文通过实例代码给大家详细介绍了iOS UIView常见属性方法,非常不错,需要的朋友参考下吧
  • 主要介绍了IOS UIView的生命周期的实例详解的相关资料,希望通过本文大家能掌握理解这部分内容,需要的朋友可以参考下
  • UIView的手势处理可以响应点击事件。(此处使用 UIImageView 作为示例)1. self.allScreenImg.userInteractionEnabled=YES;//UIImageView默认不响应手势,需要开启userInteractionEnabled//处理单击事件...

    UIView的手势处理可以响应点击事件。(此处使用 UIImageView 作为示例)

    1.  self.allScreenImg.userInteractionEnabled = YES;//UIImageView默认不响应手势,需要开启userInteractionEnabled

    //处理单击事件

    UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(clickAllScreen:)];

    [self.allScreenImg addGestureRecognizer:singleTap];

    2. 添加处理的方法

    - (void) clickAllScreen:(UITapGestureRecognizer *) recognizer {

    AllScreenViewController* recordViewController = [[AllScreenViewController alloc] initWithStoryboard];

    [self.navigationController pushViewController:recordViewController animated:YES];

    }

    以上操作即可以响应了UIImageView的点击事件了。

    方法二:

    为UIImageView设置tag,直接处理手势 以处理单击事件:

    p_w_picpathView.setTag = 333;

    -(void)touchesBegan:(NSSet *) touches withEvent:(UIEvent *) event {

    UIImageView* img = (UIImageView *) [self.view viewWithTag: 333];

    if (img) {

    // TODO some thing

    }

    }

    展开全文
  • IOS UIView详解

    千次阅读 2018-12-27 08:49:58
    IOS UIView详解 1.官方类分析 UIView类头文件: #import <Foundation/Foundation.h> #import <QuartzCore/QuartzCore.h> #import &...
  • ios UIView 多边形view

    2020-10-31 11:24:39
    ios UIView 多边形view 今天接到一个需求 做这种多边形的view 查了一些资料 最后将问题解决了 记录一下 // // UIView+Shape.h // MyPublicProject // // Created by 孙继庭 on 2020/10/31. // Copyright © 2020 ...
  • iOS UIView点击高亮效果

    千次阅读 2017-11-16 16:12:04
    iOS UIView点击高亮效果
  • iOS UIView的复制

    2016-09-01 11:20:00
    iOS UIView的复制 简书主页:http://www.jianshu.com/users/37f2920f6848 Github主页:https://github.com/MajorLMJ iOS开发者公会-技术1群 QQ群号:87440292 iOS开发者公会-技术2群 QQ群号:232702419 iOS...
  • IOSIOS UIView touch事件 详解

    千次阅读 2014-09-29 23:47:24
    IOS UIView touch事件 详解 2013-12-23 我来说两句 来源:我爱大馅饼  收藏 我要投稿 前面说过UIViewController,但是UIView也是在MVC中非常重要的一层 。正是因为UIView是Iphone下所有界面的基础,...
  • 展开全部UIViewiOS系统中界面元素的基础,所有的界面元素都继承自它。它本身62616964757a686964616fe4b893e5b19e31333363393061完全是由CoreAnimation来实现的(Mac下似乎不是这样)。它真正的绘图部分,是由一个叫...
  • ios UIView setFrame not working: 很奇怪吧,又不报错,打印frame正常,可就是frame set无效。   最简单的方法取interface builder 对该xib取消选择auto layout;
  • iOS UIView动画详解(Objective-C)

    千次阅读 2016-01-04 10:50:41
    我在之前的一篇博客中《iOS UIView动画详解(Swift)》讲解了使用Swift来实现UIView类下面提供的多种动画效果,如位置动画、旋转动画、缩放动画、颜色动画、透明度动画等等。为了这个题目的完整性,今天我使用...
  • iOS UIView类扩展,直接访问属性。
  • iOS UIView动画

    2017-01-09 17:43:53
    UIView属性动画

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,129
精华内容 5,251
关键字:

iosuiview