On this page, please open in Safari on your iPhone, and having Shortcuts installed. Then click the ⬇️ icon on this page to download.
You will see image under and click ‘Open in “Shortcuts”‘, it will go to Shortcuts APP and ask your import QA.
This is the one edited from MacStories Club, it have previous steps to do the API stuff and etc. I won’t provide that since it’s not a free club. (If Federico share for free, I will update too.)
This one only added the ‘Run Shortcuts’ action so you can get the real location each time. (You definitely will need the original Get Coord shortcuts by MacStories Club.)
The import QA will ask which shortcuts to run, so choose the one you got from Federico.
Any question please directly comment this article, I will receive notification!
]]>More at GitHub
Based on Awesome
Have 中文版本
Also in English Version
With mit licen≥≥ce
Here is a place for collection of Awesome iPad APPs! This is launched at This Blog and for further contribution, copied to GitHub. Feel free to Star and Fork. Leave any suggestions and comment. Also need contributors! Base on awesome format.
means this APP support Apple Pencil.
Notability:
]]>Coffee It is an iOS APP that builds for those who drink Coffee a lot. There are a group of people who want to log all Caffeine they drink each time. And from all iOS APPs, most Caffeine Tracker APP are abandoned in a few time, without further bug fixes and improvement, the APP is difficult to use. The rest are expensive, and less functional. This is why I develop Coffee It.
Please download Coffee It - Track Caffeine in Simplest Way and give a try!
For me, it only takes a seconds to log the coffee before I throw the empty cup, so if you feel it’s not that good to use, give me feedback and I will try my best.
Using telegram to give me feedback: @o1xhack
As a student with spare time for these APPs:
Leave a 5-star if you like it or want support me!
I’m a student in Computer Science, and I learn Swift and iOS Development myself.
This APP may not fulfill every coffee lover’s requirement, but I will keep developing it with any feedback! I cannot assure I can do every function since I still need time for my University Study, but with my spare time, I will do my best in improving it.
As you can see, I’m consistently making Coffee It faster and easy to using, for me, it only takes a seconds to log the coffee before I throw the empty cup, so if you feel it’s not that good to use, give me feedback and I will try my best.
I put all my time on my developing process (beside student works) that I don’t have time to write a whole article for features, here are the summary.
I sincerely appreciate you give me any advice or leave a 5-star with comment!
Build-in caffeine data will fulfill most normal situation.
Fulfill most normal routine log.
Favorite what you like and add in seconds
The only thing you need to care is to choose the type of coffee.
In Favorite List, single click to confirm add without more steps.
Set History as default view, and click any history to add that data, quick like Flash!
Make your list and store specific type.
Customize your life and your mood! (:
Open it, Log it, and View it.
Minority Function: Set Badge to number “1”, and put inside a folder, 3D Touch folder to quick open Coffee It, and log coffe!
View all your history! (integrated with Health)
See your daily total intake and percentage of the daily limitation(300mg)
I have ideas about history analysis, data analysis, and I will try my best to develop it, but I cannot promise to update every feedback in time, but I will do my best to keep Coffee It up-to-dates. I’m using it too!
Please give the app an upvoted if you can!
Year 2017
TOP: Watch APP is in progress~
Coffee It already supports iOS11, if any problem, contact me please.
Also In-App Rate system added! Please give a 5-star!
Since the latest Apple Watch got a really fast speed to open 3rd APP, Coffee It will come up with a Watch APP, but won’t in few months. This semester cannot be more busier and I will try my best to maintain all LifeAnalysis Lab APPs.
This is an update with plenty data update and detail changed.
No big update for this version. From data, Coffee It has extremely little users, if your friends love coffee, track stuff, welcome to recommend Coffee It!
—- Click in History to Add —-
Fast like Flash!
—- Set Default Open View —-
With the Click in History to Add function
It’s better to let your choose the default open view
—- Localization —-
Since you all using En, I’m not introduced a lot.
Just support most view/alert with Chinese
—- UI/UX —-
—- Bug? —-
—- Total Toady Caffeine —-
—- Show Badge of 1 —-
—- Localization —-
2017.03.16
Coffee It first time update to iTunes Connect
If you have any Coffee Brand or types want to be added as Default. Fill the form.
This Privacy Policy relates to my use of any personally identifiable data (”Personal Data”) collected from you when using Coffee It. For now, I only read and write to APPLE Health APP through HealthKit, which is totally secure in transition. Coffee It now doesn’t have any server to collect or analysis these data.
Coffee It is currently a track caffeine taken app, so I only ask for your permission of Caffeine write and read right directly from Health APP. By using APPLE’s HealthKit, all the data are secured and won’t affect your life.
For now, I won’t do anything to your data including but not only analyzing, transfer to server … I only show your data in the app.
Same, Coffee It doesn’t need to be connect to internet so there are no cookies now.
I will only show your data if your want and always not to share anything data through anyway if you don’t want.
I regularly review my compliance with this Policy. Please feel free to direct any questions or concerns regarding this Policy or my treatment of Personal Data by contacting me through my website.
Coffee It may change from time to time. As a result, at times it may be necessary for me to make changes to this Privacy Policy. Accordingly, I reserve the right to update or modify this Privacy Policy at any time and from time to time without prior notice. Please review this policy periodically, and especially before you provide any Personal Data. This Privacy Policy was last updated on the date indicated above. Your continued use of Coffee It after any changes or revisions to this Privacy Policy shall indicate your agreement with the terms of such revised Privacy Policy.
If you have any additional questions or concerns about this Policy or information practices, please feel free to contact me at any time at from my website or app.
up-to-dated caffeine data sources list.
Other than these sources, I also advice from Caffeine Informer, a website that have plenty data, to make sure my data was correct and enough.
ps. The official doesn’t conclude every specific type, but give me the range of a big type, so I take the average from the range.
This article is trying to add SafariViewController as childviewcontroller. I’m using SnapKit to auto layout everything and Swift 3 as the language.
I also introduced some divide and multiply using of SnapKit that not describing much in official documents.
Download final Project here.
中文版教程:Swift 3 - 用 SnapKit 添加 SafariViewController 为 childViewController
Dev Person:Developer the World.
SnapKit is a DSL to make Auto Layout easy on both iOS and OS X.
When I develop Info It, I encountered a problem that when I trying to add constraints at Xcode interface, the Xcode give me crash every time I using it. And after I installed SnapKit inside, I found it was something wrong with Xcode that I cannot find out why (searching Google, Stackoverflow, etc won’t give me any answer). After I installed SnapKit and using it, it solved my problem automatically and the elegant code of SnapKit makes constraints, auto layout beautiful and easy.
Everyone can install it quickly using CocoaPods. This article will not describing details about install CocoaPods, I will directly install SnapKit, assuming you all installed CocoaPods.
Create a new project with Swift language. Open Terminal while Xcode project still open(I using iTerm). Then ‘cd’ to your project address, and init the podfile
> pod init
After this command, add this line inside your podfile, the place like I did in picture.
pod 'SnapKit', '~> 3.0'
Then install pod using commend:
> pod install
While install SnapKit, do not close the project! After install successfully like picture, close the project and open the .xcworkspace
file
I will using “svc” for convenient for SafariViewController.
While you want using SafariViewController, you need to add SafariViewControllerDelegate after your class, and set two String we will using later as links:
1 | class ViewController: UIViewController, SFSafariViewControllerDelegate { |
Create a view and a button in the storyboard. (button using to test how to auto layout and also the change link of svc)
And connect the view and button into the controller file.
Then add the code inside viewDidLoad function about the auto layout and also childviewcontroller.
1 | override func viewDidLoad() { |
Make constraint of the showView(the view will be the parent of our svc), this code using SnapKit to make constraint of the showView compare to view, with bottom 60 to the view. Which will make an empty space of the bottom only.
Line 8 set svc to a new SafariViewController with url of my previous settings. And line 9 set the svc delegate to self.
Line 10 add the svc as childviewcontroller, and then we can using it add to showview’s subview in line 11.
Line 12 tells the controller that the svc has moved to parentviewcontroller, which is the showView.
This is basic the same as line 4-6, we set svc’s contraint just fit the showView, kind like set it to view(0,0,60,0), but since svc is the child view, we only need to set it’s constraint to it’s parent view.
After these codes, we run the project and will get this kind of simulation that the button was covered by the svc, which caused by we not setting any constraint with it.
Once for all, we know how to constraint a view with spacing 60 to the bottom, let’s do some work to set constraint of the button based on the showView and view.
1 | change.snp.makeConstraints { (make) -> Void in |
Here for the code of change.snp.makeConstraints
, we will need to add this part directly after the showView.snp.makeConstraints
since we need to make constraint after and based on the showView.
For line 2 we make the button center horizontally with showView, if you using Xcode interface to drag that before, it will be familiar to you.
For line 3, we set the top of button has an offset distance of 20 to bottom of the viewShow. Since we make constraint that the viewShow will always be 60 to the bottom to the view, we can be sure the 20 distance will always working no matter the devices are. (Later, I will try to using another way of divide to set the layout, which is more elegant way.)
Run project, and you will see the button is just under the svc and center exactly same with svc.
Now we need to write a new function to update the svc link once we click our button, and this is not quiet difficult, we just need to drag the button to our code and create an action.
When we trying to add code in this function same as the one we add in viewDidLoad, and run the project, we will find that after we click the button, nothing happened!
The code we add are right here: So why is this happen? (Remember you cannot just copy this code sicne the IBAction need you to connect yourself.)
1 | func changeWebsite(_ sender: UIButton) { |
Well, that is because we don’t add any constraint to the svc we create in this function, so the system don’t know the layout the svc and where it should be. So we trying to add svc.snp.makeConstraints
same as the one in viewDidLoad and the code become:
1 | func changeWebsite(_ sender: UIButton) { |
Then we run the project and click the button, we will find the svc change the link and load a new website: (the first load is the article, and second is the main page.)
This project is basically done with all, now you know how to using SnapKit to auto layout then to make safari as an childview in anywhere. Well, but using precise number of offset is not very good. Why? Cause in the picture, you will find we don’t consider that height of the button and it has more white space from bottom of showView to top of button than bottom of button to bottom of view.
So we will using a more auto way: Divide the total view height and using fraction to auto layout it.
Now consider that we only need relatively little space for button and most of our view to svc, I will assume we divide the view into 10 parts, and the svc occupied 9 out of 10. So we are trying to divide the view into parts, but when in code we actually need to multiply the height with 0.9 because dividing height into 9/10 is not quick than multiply (Using your math skill to calculate).
1 | showView.snp.makeConstraints{ (make) -> Void in |
We change the make edge into details of top, right, left since we need a limit of height rather than based on edges. Line 2-4 makes the showView has no offset to the view of top, right and left. Line 5 set the height to be the 90% of the height of the view(superview). Run the project and you will find this really works:
Then we will handle the button layout that also using multiply and divide way. To make the button fit equally with consideration of its height, we will divide the rest part of view(1-0.9=0.1) into 3 parts. Equally fraction of top white space, height and bottom white space. this means we multiply the height with 0.1*0.3=0.03 and same as the white space from bottom of showView and top of button. Let’s try it:
1 | change.snp.makeConstraints { (make) -> Void in |
Woops! We got really wired one:
Why is this happening?? That is because we are thinking a way that computer doesn’t understand!
So actually we want the rest 10% of view divide into 3 parts, that is 0.1/3=0.0333… which is infinite, so we just set the height to 0.034 of the height and the other two white space to 0.033. But what we need to do is tell the computer that it is 0.967(1-0.967) to the bottom compare to the view, not 0.03 compare to the showView. This is how multiply and divide works, we actually multiply the object’s height, not what we think that auto calculate the distance of white space, so changing the code into the following:
1 | change.snp.makeConstraints { (make) -> Void in |
And it worked!
You can see that multiply and divide can be quite confused especially you have two or more objects need to layout, but once for all, when you done the calculation, you will be good from that day to the day you need to add a new object! You will not need to consider different devices and the impact of using number as distanced to caused some button or label be covered by others.
]]>o1xhack.com 域名购买自 goDaddy,使用 dnspod 进行解析,基于 hexo 和 github page 搭建的静态博客。
hexo 主题使用大名鼎鼎的 next。
既然作为一个开发者,没有一个像样的页面说明可不行!
从接触 cs 之前就已经尝试了不少 app,iOS 为主
作为一个准备从事科技行业的骚年,怎么能没有尝新的态度呢?
生活着,就是全部。