The problem with setting a project free on GitHub is you mostly don’t receive any feedback, except for some bug reports where features don’t work like they should. The important aspects stay mainly in the dark: How is your work regarded? Is it useful or disencouraging? Does the documentation give enough help or do you just keep overwhelming the user with features?
That’s where I currently stand with iOSLib. In talks to users I heard many are overwhelmed by the size, and the documentation is so far behind the contents that simply adding more features is ridiculous when the potential user has to find out what’s inside and working. By its concept, iOSLib is aiming rather to be a full library than a collection of plug-in modules. The latter ones are great when you just want a handful of enhanced classes, but they result in a lot of redundant code once you use more of them. A library blows up your project (and I still hope that the Xojo-made plugins promised for a coming release will be able to change this), but everything encapsulated in a Xojo class makes debugging much easier (want to know the contents of a NSArray? Pause the project and inspect the debugdescription property) and reduces redundancy enormously by intensive use of inheritances and shared code. And it alleviates the sometimes pesky memory management: The ARC is handled by the object classes, no need to retain or release pointers manually when the class does that for you.
So I’m perfectly fine with the conceptional differences between iOSKit (and plugin collections and projects) and iOSLib as we offer solutions for both uses: Lightweight modularized plug-ins and fully OOP use even of Core Foundation classes that Apple treats as pure pointers, not objects. Anyway, I’d like to make iOSLib less frightening and have started to fine-tune a lot of things now (not yet online), hiding internal or only declare-relevant properties and methods and therefore reducing the sometimes much too full Autocomplete list. I am working on the documentation and redesign a lot of internal things. And Im adding description tags to every method and property.
To get to the poodle’s core (ahem): If youve looked into iOSLib in the past and have a few minutes to spend, I like your feedback: How did you experience it? What should be changed to make the programmer experience a better one? Are there any classes you are urgently missing?
Please note that while I respect the wish for a smaller project size, due to the library structure of iOSLib this can only be done framework-wise. There are some independent frameworks which you can kick out without any problems, but with so many interdependencies even on NSObject level it’s not possible to thin it out to just one control or so. I could, however, be able to boil down a working implementation on demand.
And, having added even more animation and customization features, feel free to ask me if you are looking for a custom control running smoothly by using the API animations too.
Please give me some feedback. Thanks a lot!
P.S.: Apologies about the tableview delay. Refining the library as mentioned above, I found my custom control/view handling via interface much too complicated. The rebuild from UIview upwards will take some time but be worth it. Event handling will be much faster. And because I was asked for a TouchID module Security will be next (a full featured KeychainItem and LAContext implementation), accompanied by UserDefaults. And did I tell you about the AlertController with custom textfields?
i really like the touchid feature.
But do you have some kind of 3dtouch feature yet?
I just built the new UIPressesEvent class and implemented the events on NSResponder level. I only couldn’t test them yet, but they will be available with the next release. If you like to test, I can send you a link to my private working repository of iOSLib. The new iOSLibCanvas control should catch them.
EDIT: Look here: https://github.com/UBogun/Xojo-iosLib/wiki/AppleResponder
Ulrich by way of feedback, the only things I currently use from iOSLib are the alternatives to PushTo, e.g. PushToCurl, and some iOSGraphics methods such as DrawLinearGradient.
I’d love to be able to add subtle animations to my app’s interface of the type that you see in modern iOS apps; where instead of my status bar just appearing at the top of my views (I change a few iOSConstraints to move things around) it would slide in and out but in a subtle way (you know, so it’s just completing the slide when it appears). I think there must be UI libraries for Xcode that do this as it has become a fairly common technique in the apps that I use and my Xojo app looks a little plain and boring because it lacks these subtle animations/movements. I believe at least some of this is do-able using iOSLib but I’ve found it difficult to work out precisely how to do it. So some additional, more practical demos would be great.
Thanks, Jason, it helps a lot to have an idea what the library is being used for.
What you describe is certainly possible with iOSLib. Sometimes coding the behavior by hand on a standard control isn’t the best way to achieve the result you often have to customize a delegate or work with the events, or you need to chain a few block methods. I am not sure I have seen the behavior you described do you have an example video or know a free app I could download where it’s present?
I am well aware the documentation needs more explanations and examples, but I must admit I find myself often in the classical dilemma: I do not earn anything with iOSLib and have to keep a balance with the necessities of so-called modern life, so I usually only check if the classes work alright and leave the rest open.
Then there’s the aspects of iOS which Im personally interested in, and as a matter of fact graphics and animations are a part of them. So your task is something I like to spend a few hours with soon. Maybe you like to contact me backchannel with more informations?
Reading your reply gave me another valuable hint: I started the lib not only to make API features accessible but to make them easy to use too. I didnt work that much on the latter aspect and simply added more declares.
So for all, not only for you: If you should have an iOS problem you cannot figure out how to implement please feel free to contact me. Often a convenience method isnt much work, and knowing what features are wanted gives me an idea where I should put my focus.
And in the case you think youd be in need of a custom control that is not really part of Apples API, dont hesitate too.
Again, lot of thanks to both of you for your feedback!
I’ve only used a couple of bits so far, but it was also helpful to put together a couple of declares I needed for a running app I made. It’s not in the store yet, needs some polishing, but it surely would have taken me much longer to work out some of those declare bits on my own.
Also, I do like practical examples as they are often more illuminating than a bunch of bits you have to read docs about and then put together with some other bits.
In any case, kudos for all the effort and generosity.
It’s probably because of my poor description :). As an example of this, the Facebook app displays a status bar that moves in from the top which says something like “Re-establishing lost connection” (or something else I guess, depending on your language settings) when you activate the app after it hasn’t been activated for a while. I suppose this occurs, for example, if the authentication token/cookie/whatever-FB-uses has expired. If you’ve got Facebook and you can stay off it long enough to make this appear, that would demonstrate the behaviour.
Hehe, I deleted my FB account last year and moved to seen.is
But never mind. I did a quick search on the Apple dev site and it looks like there are indeed transition methods on the delegate of the controller of bars, like https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewControllerAnimatedTransitioning_Protocol/index.html#//apple_ref/occ/intf/UIViewControllerAnimatedTransitioning
Depending on what other tasks the delegates have to perform, addressing the control delegate could be easy or it could mean to rebuild the control from scratch if its handling data containers for the display too.
Ill look closer into it soon and tell you what I found out.
I have been entertaining a love hate relationship with Facebook for years, and closed several times my account. In fact it is just hidden and never deleted, so any time you want to log in you can, even years later.
I know, Michel. That’s why I don’t log in there anymore
Esp. @Jason (but the others too):
I have the feeling only adding demo views isnt the right thing to do. If you want to use the iOS features effectively, its better to have some basic knowledge of the things behind the scene and try out some things yourself. This code here will not run with the current version of iOSLib unmodified, I have added some convenience methods in between like for setting the gradient colors. But in general (and well aware of my bad habit to talk too much, at least in written form): Do you think it would help?
imo pictures (in this case demos) always say more compared words.
Thanks, Christoph. Ill add a few “tutorial” demo projects once I have refined the subclasses of AppleView.
About images: Animation images without animation don’t say that much, and I found no way to embed a video in the Github Wiki. I am glad I finally figured out how to embed images.
I am still experimenting with a screenshot module for iOSLib that builds animated GIFs or PNGs. It already works with 60 fps, but the images are empty ;((
So yes: I know it’s too much text and not enough pictures. Ill try to fix that. And hope that the mass of text gives a little bit of assistance compared to the pure demos and raw method descriptions. Thanks again!
Just tried to run the iOSLib Unified.xojo_project today and it’s crashing Xojo. All the versions I have installed on my Mac crash when I try to run it. I’ve submitted a report <https://xojo.com/issue/42961>.
Has anyone else seen this or should I start troubleshooting my setup. Other projects seem to run fine.
Also, I was going to look for useful declares related to working with the iPodMusicPlayer. I have an Xcode project that just recently quit working and I thought I would try building it in Xojo. So far I have only experienced frustration.
This is going to sound odd BUT
- open the project
- click on the IOS entry under build settings
- then hit run
The project is configured to run on a device that is NOT on your machine and that causes the NOE
Fixed already for a future version
Thanks Norm. I think it could have taken me days to figure that out.
it took me a while and I have access to the IDE sources
Thanks a lot, Norman! Ive been quite clueless about this.