Skip to main content

Posts

Recent posts

How to apply custom font on attributed HTML text

Today, I came across a very challenging situation which yields into a great learning by end of the day.

Let me give you more details about this to you.


Task: I am getting attributed HTML text which already has multiple tags like bold and line break. I want to show the attributed text in custom font keeping the existing tags.

Problem: When I applied custom font on attributed text, the existing tags like bold and line break overrides.

Solution: I found a style tag which needs to apply on the attributed text.

let modifiedFont = String(format: "<span style=\"color:#000000;font-family: '-apple-system', 'SFProText-Regular'; font-size: \(self.font?.pointSize ?? 14.0)\">%@</span>", htmlText)


Code example:


extensionUITextView { funcsetHTMLFromString(htmlText: String) { let modifiedFont = String(format: "<span style=\"color:#000000;font-family: '-apple-system', 'SFProText-Regular'; font-size: \(self.font?.pointSize ?? 14.0)\&…

How to work with Charles proxy server

How to deal with iOS Safe Area and set UI For iPhone X

Today, my tester reported one issue related to bottom space in iPhone X. The bottom space of button is appropriate in all the iOS devices except iPhone X. See the below screenshot:-




To solve this issue, I need to take care of safe area. safeAreaInsets and safeAreaLayoutGuide are available after iOS 10 only.

Important points:-

If you need your UI elements to be inside the safe are, then set the constraints between UI element and safe are layout guides.If you need your UI elements to be extend to the edge of the screen, then set the constraints between UI element and it's super view.

Code snippet to get the bottom space.
if#available(iOS11.0, *) {
let window = UIApplication.shared.keyWindow let bottomPadding = window?.safeAreaInsets.bottom ?? 0.0 }





References:-

https://medium.com/@kahseng.lee123/how-to-solve-the-most-common-interface-problems-when-adapting-apps-ui-for-iphone-x-44c0f3c80d84https://medium.com/rosberryapps/ios-safe-area-ca10e919526f

Understanding MVP

We all are using MVC in the beginning because it is easy, but MVP architecture is not that difficult to understand and implement in iOS project. Currently, I am using the MVP architecture in my latest project and I come to know many advantages of it.

To begin with, the most preponderant advantage of using MVC is that it is scalable. The second significant advantage which is worth mentioning is that if you have different flavours of your application where business logic (presenter) is same, then MVC is the right choice.

A good example here is:-

MVP folder structure consist of model, view, protocols, presenter, xib, service classes.




Model class consist of all the properties which hold the dataView class consist of all the UI elements which are visible to user. Separate xib for each viewProtocol class consist of methods which need to implement by view class and presenter classPresenter class consist of business logicService class consist of api interaction methods
Flow: Assign the custom vi…

Test cases code coverage in Xcode

How to check what percentage of unit test cases cover your classes/framework/project:- After writing unit test cases, make sure your all test cases run successfully. To cross check this, Goto Product menu->Perform action-> Test without buildingGoto Edit scheme: Select Test and select the "Gather coverage data" option.To see the code coverage, perform step no 1 once again.Open the last tab(report navigator) on the left panel.Open the coverage tab(at the top panel)

Return multiple values from a function in objective C

We can return tuples in swift as follows:-

func getData()->(Int,Int,Int){//...code herereturn( hour, minute, second)}You can't do that in objective-c. Best option is using parameters by reference. Something like this.