【问题标题】:Decrease size of UITextView to reveal UIButton减小 UITextView 的大小以显示 UIButton
【发布时间】:2014-10-07 20:28:33
【问题描述】:

我的应用中有一个文本视图,旁边有一个完成按钮,用于退出键盘。基本上,与其在文本视图旁边永久放置完成按钮,我希望文本视图在点击时减小宽度,然后在空间中出现一个完成按钮。然后当用户点击屏幕或完成按钮时,按钮消失,文本视图再次增加到正常大小。

我已经实现了使按钮在用户开始输入时出现的代码,但我想更改它以便在他们点击文本视图时出现,我还需要帮助添加动画以缩小文本视图.

谢谢。

【问题讨论】:

    标签: ios swift uibutton uitextview uianimation


    【解决方案1】:

    实现您的 textview 的委托方法 textViewShouldBeginEditing:。然后在那个方法中,做这样的事情:

    button.alpha = 0.0f;
    button.hidden = NO;
    [UIView animationWithDuration:0.3f animations:^{
        NSInteger padding = 5;
        CGRect textViewFrame = textView.frame;
        textViewFrame.width -= CGRectGetWidth(button.frame) - padding;
    
        // Edit
        textView.frame = textViewFrame;
    
        // and just to fade the button in as the text field shrinks
        button.alpha = 1.0;
    }];
    

    当您单击按钮以将文本字段返回到正确的宽度时,我会做相反的事情

    【讨论】:

    • 感谢您的回复。我在 Swift 中执行此操作,我想知道 textViewFrame.width -= CGRectGetWidth(self.notesDone.frame) 在 Swift 中的等价物是什么?目前我收到一个错误 - 无法使用类型为“(CGFloat,CGFloat)”的参数列表调用“-=”
    • 我对 Swift 不熟悉,但是您是否尝试过等效的 textViewFrame.width = textViewFrame.width - self.notesDone.frame.size.width 或者这只会导致相同的错误?
    • 啊,我明白了。这给了我错误:'无法在 textViewFrame 中分配给'宽度'
    • 哦,哎呀。我的意思是textViewFrame.size.width。我还编辑了我的答案,注意到我忘记将 textview 的框架设置回新框架。不确定是否重要,只是不想增加混乱
    • 知道了!必须添加self.notesField.frame.size.width = textViewFrame.size.width。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 2018-06-11
    相关资源
    最近更新 更多