Swift, iOS - have button move up when clicked to display text field? Then move back? - ios

I know how to accomplish this in something like sprite kit but with just a normal ViewController I'm a little lost - right now I have my button and my UITextfield set up on my xib file. Right now, when the button is clicked my textfield goes from hidden to not, which is great.
Problem is I need to have my button slide up (as in animate up) to "reveal" the text field when clicked. As in the textfield would be underneath the button. When another button is clicked, I want the button to slide back down to its original position. I don't know how to implement these animations.
Here is an image of what I need:
So the blue button would trigger the move up when clicked. Then if another button is pressed the blue button moves back to original position over textfield.
How can I accomplish this?

Here's an option you can try if you aren't displaying these in a UITableView:
Setup your .xib with all of the possible views in an 'expanded' state. Give your views that will be revealed a height constraint (in addition to the others needed to layout the view properly), and then create an outlet for those height constraints in your view controller. Additionally, store a reference to what you want the expanded height of the view to be in your view controller.
In viewDidLoad of your view controller you will set those height constraints' constant values to 0. This will cause these views to effectively disappear, and your other views should fill in the gaps they leave behind based on their constraints.
When one of your buttons is pressed, you'll update which views should be visible by setting their height constraint to 0 if you want them hidden, or to the value you saved earlier if you want them shown. After the height has been updated, call
UIView.animateWithDuration(howLongTheAnimationLasts) {
self.view.layoutIfNeeded()
}
which should animate the change in height values.
Alternatively, you could try putting your options in a UITableView and altering their height using tableView:heightForRowAtIndexPath: and reloading the cells when their heights should change.

Related

Smaller button over a big button in swift

I am new to swift and iOS development. I have created a scroll view with table view cells and image views inside cells. Each Image view has a button with same constraints. I have a fixed button in the same screen (irrespective of scroll view) and I am not sure how to achieve the click for it since every time I click on it, the background button is being clicked. I saw some solutions about disabling and enabling the buttons but in this case, I will not be sure which button will be in the background since it is a scroll view. Any help on how to solve this will be appreciated
Since I don't see your code, I can't tell you the exact fix but I assume that the question is how to determine the button's position in the parent view hierarchy. Every UIView has a method called bringSubviewToFront(view:) so if this was the case, then, you can use this method to bring your button to the front.

Placing a button at the bottom of a collectionView

I'm trying to make a collectionView that shows 10 item at first, when scrolling to the bottom I want to have a button that clicking it will load more info, its something simple but the thing is that I'm not using storyboard and I did everything programmatically, so how it can be done?
UICollectionView is a subclass of UIScrollView. So you need to:
Add your button as subview of your UICollectionView
Set it's frame in the way you prefer (if you count your frames in code - just set it manually) based on .contentSize of you UICollectionView.
Set .contentInset.bottom property based on the height of your button/footer
You need to handle the case when .contentSize changes. If your button should be visible all the time, maybe better to set your button frame in viewDidLayoutSubviews() function
If you want to show/hide it in some cases, you can animate it using UIView.animate(withDuration:) by setting .contentInset.bottom in the block

UIButton not visible in TableView Cell

I have parsed CSV file data and populating in a UITableView. I have five labels and a button in the cell. The labels are showing data appropriately but the button is not visible. I have dragged the button onto the storyboard. I have created a outlet variable also. But still the button is not visible. What could be the reason ?
Even when i change the position of my label now and run the app it doesn't change.
Does this have something to do with core-data ? Because i have saved my csv data as core-data
Hit the runtime UI debugger key when in the considering VC is showing. The button should be above the console panel the second last one. Right now am not in my mac so cant post a screenshot.
Hit the button and observe that your button is being drawn beneath some view or your button is being drawn at all.
Plz confirm and comment
I suggest you to apply auto layout constraints for button and labels. I think it will work.
REASON: your label is over your button. If you don't use auto layout label width get width of tableView (least the initial position x) and background default to white AUTO when your app running.
Change in code the label background to 'clear' and button will appear or search the button in the cell and use method 'bringSubviewToFront:'.
BEST SOLUTION? Use auto layout constraints.

iOS: How can I remove reference to sub-views?

I'm creating an app that has hundreds of view controllers in interface-builder. Each of these view controllers has a button with a code number. When the button is pressed I want the button to expand and show a few lines of text describing the code number. The problem is that the button is placed within a subview that acts as a frame for the button. Therefore, the expanded button size is going to be constrained to that subview and the text will be cutoff. Is there a way for me to programmatically remove the reference to the sub-view? I can do this in interface-builder, but like I said there are hundreds of these view controllers.
Instead I removing it you could expand the subView's and the UIButton's width. That would allow the button to expand as you'd like it to and you would not have to remove the subViews.

UIButtons not working in Scroll View

I have a Scroll View with a View (content view) inside of it. I've added two buttons to test. The Scroll View scrolls fine but the buttons within the content view are not clickable. I've seen plenty of posts saying this issue happens when they programmatically add UIButtons to the View, but I am not doing this. Here is my exact process:
Drag the Scroll View onto the main view. Add 4 constraints
Drag the Content View onto the Scroll View. Add 4 constraints.
Add 2 Buttons (one high and one low to test scrolling) to the Content View.
This is all I am doing, no code at this point. Is there anything else I have to do to allow the buttons to be clicked? Here is a screenshot of my xib:
Update:
When hooking the button up to a simple IBAction and logging a message, it turns out it IS being pushed and working properly. However, when the button is pushed, the button isn't changing colors like it should (its "pressed" state is not appearing). Any ideas why?
First make the button to custom type
Select button from storyboard then on right attributed inspector change its "state config" to whatever you need like Highlighted, selected, Disabled and default and choose the colour for each state.
Now you can see the colour change on that button.
A UIScrollView first needs to know whether or not you are going to scroll before letting the touch pass to its child views. If you want the child views to get the touch immediately, set the UIScrollView's delaysContentTouches to NO.

Resources